mockito是mocking的框架,用于解决在单元测试中对于很多类和资源的依赖,在测试开发中,能单测中能够比较好的隔离外部资源,达到我们比较理想的测试效果。
1.在maven中引入mockito
<!--MOCK框架 -->
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.1</version>
<scope>test</scope>
</dependency>
<!--MOCKITO框架 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
备注:还有junit相关的jar包
2.创建mock的对象
@Test
public void testTea(){
//创建mock的对象
Tea mockTea=Mockito.mock(Tea.class);
String tea="green tea";
//设置输入的zhi,和预期返回的zhi
when(mockTea.tea("red tea")).thenReturn("green tea");
when(mockTea.tea("green tea")).thenReturn("mlik");
String real=mockTea.tea(tea);
System.out.println(real);
//断言检查
assertEquals(mockTea.tea("green tea"),"mlik");
//验证该方法是否执行了两次
Mockito.verify(mockTea,times(2)).tea(tea);
}
@Test
public void test2(){
Tea tea2=new Tea();
//使用spy监控真实的对象
Tea mock=spy(tea2);
mock.tea("red tea");
assertEquals("red tea",tea2.tea("red tea"));
verify(mock,times(3)).tea("red tea");
}
方法一中Mock不是真实的对象,它只是用类型的class创建了一个虚拟对象,并可以设置对象行为
方法二中spy是一个真实的对象,但它可以设置对象行为
3.设置对象的预期行为返回
当我们在调用一些接口或者方法,使用when对我们的输入值,进行干预,不用通过真实的服务,就能拿到想要的数据,进行验证
4.使用verify验证方法以及执行的次数,是否达到预期
文章参考:https://blog.csdn.net/xiang__liu/article/details/81147933