摘要:
Mockito项目实战demo(怎么用mock代替本类方法调用,即this调用) 情形一 被测试类如下: @Service @Transactional @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class Co 阅读全文
摘要:
Mockito 临时 mock 对象 如果需要临时将一个对象的内部对象替换为 mock 对象,在无法通过set和get处理内部对象的情况下,可以利用反射搞定。 Java JOOR 反射库 是一个很好用的反射库。本文用它进行临时替换。 用一个小项目作为示例: 项目结构: . ├── build.gra 阅读全文
摘要:
Mockito 使用 PowerMock 让 Mockito 支持静态方法 PowerMock 是一个增强库,用来增加 Mockito 、EasyMock 等测试库的功能。 Mockito 默认是不支持静态方法 比如我们在 ExampleService 类中定义静态方法 add: public cl 阅读全文
摘要:
Mockito 测试隔离 根据 JUnit 单测隔离 ,当 Mockito 和 JUnit 配合使用时,也会将非static变量或者非单例隔离开。 比如使用 @Mock 修饰的 mock 对象在不同的单测中会被隔离开。 示例: import org.junit.Test; import org.ju 阅读全文
摘要:
Mockito 使用 mockingDetails 判断对象是否为 mock对象、spy 对象 Mockito 的 mockingDetails 方法会返回 MockingDetails 对象,它的 isMock 方法可以判断对象是否为 mock 对象,isSpy 方法可以判断对象是否为 spy 对 阅读全文
摘要:
Mockito 使用 verify 校验是否发生过某些操作 使用 verify 可以校验 mock 对象是否发生过某些操作 示例 import org.junit.Test; import static org.mockito.Mockito.*; public class MockitoDemo 阅读全文
摘要:
Mockito 使用 thenCallRealMethod 调用 spy 对象的真实方法 thenCallRealMethod 可以用来重置 spy 对象的特定方法特定参数调用。 示例: import org.junit.Assert; import org.junit.Test; import s 阅读全文
摘要:
Mockito 使用 reset 重置对象 使用 reset 方法,可以重置之前自定义的返回值和异常。 reset mock 对象示例 import org.junit.Assert; import org.junit.Test; import static org.mockito.Mockito. 阅读全文
摘要:
Mockito 使用 doNothing 让 void 函数什么都不做 doNothing 用于让 void 函数什么都不做。因为 mock 对象中,void 函数就是什么都不做,所以该方法更适合 spy 对象。 示例: import org.junit.Test; import static or 阅读全文
摘要:
Mockito 使用 doAnswer 自定义方法处理逻辑 doAnswer 的作用和 thenAnswer 相同,但使用方式不同: import org.junit.Assert; import org.junit.Test; import org.mockito.MockitoAnnotatio 阅读全文
摘要:
Mockito 使用 doThrow 让方法抛出异常 如果一个对象的方法的返回值是 void,那么不能用 when .. thenThrow 让该方法抛出异常 如果没有返回值, 下面这种写法是错误的: import org.junit.Test; import org.mockito.Mock; i 阅读全文
摘要:
Mockito 使用 doReturn 设置方法的返回值 doReturn 的作用和 thenReturn 相同,但使用方式不同: import org.junit.Assert; import org.junit.Test; import org.mockito.MockitoAnnotation 阅读全文
摘要:
Mockito 使用then、thenAnswer 自定义方法处理逻辑 then 和 thenAnswer 的效果是一样的。它们的参数是实现 Answer 接口的对象,在该对象中可以获取调用参数,自定义返回值。 示例: import org.junit.Assert; import org.juni 阅读全文
摘要:
Mockito 使用 thenThrow 让方法抛出异常 thenThrow 用来让函数调用抛出异常。 import org.junit.Assert; import org.junit.Test; import static org.mockito.Mockito.*; import java.u 阅读全文
摘要:
Mockito 使用 thenReturn 设置方法的返回值 thenReturn 用来指定特定函数和参数调用的返回值。 比如: import org.junit.Assert; import org.junit.Test; import static org.mockito.Mockito.*; 阅读全文
摘要:
Mockito @InjectMocks 注解注入 mock 对象 mockito 会将 @Mock、@Spy 修饰的对象自动注入到 @InjectMocks 修饰的对象中。 注入方式有多种,mockito 会按照下面的顺序尝试注入: 构造函数注入 设值函数注入(set函数) 属性注入 示例: 准备 阅读全文
摘要:
Mockito spy 和 @Spy 注解 spy 和 mock不同,不同点是: spy 的参数是对象实例,mock 的参数是 class。 被 spy 的对象,调用其方法时默认会走真实方法。mock 对象不会。 下面是一个对比: import org.junit.Assert; import or 阅读全文
摘要:
Mockito 参数匹配顺序 如果参数匹配即声明了精确匹配,也声明了模糊匹配;又或者同一个值的精确匹配出现了两次,使用时会匹配哪一个? 会匹配符合匹配条件的最新声明的匹配。 示例: import org.junit.Assert; import org.junit.Test; import org. 阅读全文
摘要:
Mockito 参数匹配 精确匹配 我们之前介绍过这样的例子: import org.junit.Assert; import org.junit.Test; import java.util.List; import static org.mockito.Mockito.*; public cla 阅读全文
摘要:
Mockito mock 泛型类、泛型接口 示例: import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import static org.mockito.Mockito.*; public clas 阅读全文