首页  

Mocktio 指南     所属分类 unit-test 浏览量 582
Mockito 是一个模拟测试框架 , 用于模拟 接口 类 对象的行为

Tasty mocking framework for unit tests in Java

https://site.mockito.org/

https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html
https://javadoc.io/doc/org.mockito/mockito-core/1.10.19/org/mockito/Mockito.html


LinkedList mockedList = Mockito.mock(LinkedList.class);
// stubbing 打桩
Mockito.when(mockedList.get(0)).thenReturn("first");
Mockito.when(mockedList.get(1)).thenThrow(new RuntimeException());

org.mockito.Mockito 的 mock 方法 模拟类和接口

mock方法 默认返回空数据 对象类型为 null
int 0 
Integer null 
boolean false 

@Mock 注解   和 mock 方法 

mock对象初始化  mock对象依赖注入 
MockitoAnnotations.initMocks   
可使用 @RunWith(MockitoJUnitRunner.class) 完成 初始化

 mockito 实例  

参数匹配
精确匹配,可以用 eq
Mockito.anyInt() 匹配所有类型为 int 的参数

spy 和 @Spy 注解
spy 和 mock 的区别 
spy 的参数是对象 ,mock 的参数是 class
未打桩前  spy 会调用真实方法 ,mock不会调用实际方法


@Spy  如果修饰的变量是 null,会自动调用类的无参构造函数来初始化

mockito 会将 @Mock  @Spy 修饰的对象自动注入到 @InjectMocks 修饰的对象中

按照以下顺序尝试注入
构造函数注入
设值函数注入(set函数)
属性注入


使用 thenReturn 设置方法返回值 thenReturn 指定特定函数和参数调用的返回值 thenReturn 可指定多个返回值 ,调用时依次返回 调用次数超出时,返回最后一个返回值 thenThrow 让方法抛异常 指定多个异常时 调用时依次抛异常 调用次数超出时,抛出最后一个异常 使用 then thenAnswer 自定义方法处理逻辑 参数是实现 Answer 接口的对象,在该对象中可以获取调用参数,自定义返回值 doReturn 设置方法的返回值 doReturn 与 thenReturn 相同,但使用方式不同 MockitoAnnotations.initMocks(this); Random random = mock(Random.class); doReturn(1).when(random).nextInt(); 使用 doThrow 让方法抛出异常 方法返回值是为 void,不能用 when .. thenThrow doNothing 让 void 函数什么都不做 MockitoJUnitRunner 使用 reset 方法,重置之前自定义的返回值和异常 使用 thenCallRealMethod 调用 spy 对象的真实方法 使用 verify 校验是否发生过某些操作 配合 time 方法,可以校验某些操作发生的次数 mockingDetails 方法返回 MockingDetails 对象 isMock isSpy 方法 PowerMock mock 静态方法 PowerMockRunner Mockito 默认不支持静态方法 PowerMock 基于Mockito, 是一个增强库,支持 静态方法 mock powermock 静态方法mock PowerMock is a framework that extends other mock libraries such as EasyMock with more powerful capabilities. PowerMock uses a custom classloader and bytecode manipulation to enable mocking of static methods, constructors, final classes and methods, private methods, removal of static initializers and more.

上一篇     下一篇
Spring AOP @Aspect

powermock 静态方法mock

mockito 实例

Mockito mock 和 spy 区别

mock 与 字节码生成工具

spring web 注解