美文网首页
Mockito框架使用

Mockito框架使用

作者: supremecsp | 来源:发表于2021-01-05 23:14 被阅读0次

Mockito框架是单元测试处理bean依赖注入的一大利器


@Data

@Builder

public class User {

    private Longid;

    private Stringname;

}

@Repository
public class UserDao {
    public User getUser(Long id){
        return User.builder().id(id).name("user").build();
    }
}
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public User getUser(Long id) {
        return userDao.getUser(id);
    } 
}

省略UserService ,此时正常编写测试类的话会加载Spring的依赖

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest {

    @Autowired
    private UserService userService;

    @Test
    public void test() {
        User user = userService.getUser(1L);
        Assert.assertEquals("user",user.getName());
    }

}
image.png

Mockito的出现,可以自由自定义数据,方便日常单元测试

public class DemoTest {

    @Test
    public void test() {
        UserService userService = mock(UserService.class);
        when(userService.getUser(any(Long.class))).thenReturn(User.builder().id(1L).name("user").build());
        User user = userService.getUser(1L);
        System.out.println(user);
        Assert.assertEquals("user",user.getName());
    }

}

或者

public class DemoTest {

    @Mock
    private UserService userService;

    @Rule
    public MockitoRule mockitoRule = MockitoJUnit.rule();

    @Test
    public void test() {
        when(userService.getUser(any(Long.class))).thenReturn(User.builder().id(1L).name("user from mock").build());
        User user = userService.getUser(1L);
        System.out.println(user);
        Assert.assertEquals("user",user.getName());
    }

}

启动无需加载spring,很快跑完单元测试

Mockito一些常用方法

//输入任何Long类型的参数,返回值都为thenReturn中的值
when(userService.getUser(anyLong())).thenReturn(User.builder().id(1L).name("user").build());
//当输入参数为22L时,返回值为thenReturn中的值
when(userService.getUser(argThat(arg -> 22L==arg))).thenReturn(User.builder().id(1L).name("user").build());
//校验getUser方法是否被调用,verify也可检验调用次数
verify(userService).getUser(1L);
//spy局部mock
List list = new LinkedList();
List spy = spy(list);
when(spy.size()).thenReturn(100);
spy.add("one");
System.out.println(spy.size());//100 is printed

相关文章

  • 优雅单测-3用Mockito轻松解决复杂的依赖问题

    1.Mockito Mockito是GitHub上用于Java使用最广泛的Mock框架 Mockito核心解决的问...

  • Mockito框架使用

    Mockito框架是单元测试处理bean依赖注入的一大利器 省略UserService ,此时正常编写测试类的话会...

  • 学习链接

    在Java路上,我看过的一些书、源码和框架mockito简单教程Mockito使用指南

  • Android单元测试之PowerMockito

    在博客Android单元测试之Mockito中,主要介绍了Mockito测试框架和基本使用。在博客结束时,我们提出...

  • Mockito使用介绍

    Mockito是用于写Java的单元测试框架,在单元测试中使用Mockito来创建和模拟(Mock)假的Java对...

  • 单元测试框架:Robolectric

    前言 前面我们介绍了单元测试框架 JUnit 和 Mockito 的使用(详情查看:单元测试框架:JUnit,单元...

  • Mockito测试框架指南

    1. Mockito 介绍 1.1 Mockito是什么? Mockito是mocking框架,它让你用简洁的AP...

  • Mockito踩坑指南

    由于Spring/Spring Boot中支持Mockito框架,所以我们的注解可以直接使用@RunWith(Sp...

  • Junit

    通常 Java 中的 Junit 会使用到 mockito 框架,详情可以参考之前专门介绍 Mocktio[htt...

  • mockito原理

    Mockito 官方文档jdoc Mockito的使用及原理

网友评论

      本文标题:Mockito框架使用

      本文链接:https://www.haomeiwen.com/subject/cndgoktx.html