Mockito简单使用java
对于某些不容易构造,或者不容易获取比较复杂的对象,用一个虚拟的对象(Mock 对象)来建立以便测试的测试方法。spring
Mock-Object:ide
mock一个bug.class的id单元测试
Bug s=mock(Bug.class);
when(s.getId()).thenReturn("dddddddd");
System.out.println(s.getId()); //print ddddddd
Mock-List:测试
mock一个list里面的元素this
Mockito注解使用:spa
为须要mock的对象添加注解,在测试代码执行的状况下触发该注解的生效,把mock覆盖对象注入,以达到能够在正式的代码加入mock,只要控制好生效的机制3d
@Mock //mock 注解 @Autowired //spring 注解 private BugDaoI bugDao; @Override public Map<String, List<Object>> clo() { MockitoAnnotations.initMocks(this); //运行到这里注解生效 List<Object[]> mockdata=new LinkedList<Object[]>(); mockdata.add(new Object[]{"8645","test1"}); when(bugDao.findBySql("select distinct name from tbug")).thenReturn(mockdata);//开始mock
经过mock集合jacoco提升测试代码覆盖率:code
测试代码:能经过变化参数(等价类,边界值)来观察总体覆盖率的提高,下面是mock后的覆盖率提高示例对象
Jacoco统计:能更清晰的把握你写的白盒测试代码的覆盖状况,收益状况
总结:
单元测试的mock比httpmock要简单不少
经过注解对mock的时机进行控制,十分灵活
动态添加@Mock注解:
动态添加注解
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>