拓展阅读
jmockit-01-jmockit 入门使用案例
jmockit-02-概览
jmockit-03-Mocking 模拟
jmockit-04-Faking 伪造
jmockit-05-代码覆盖率
mockito-01-入门介绍
mockito-02-springaop 整合遇到的问题,失效
现象
发现引入一个日志组件后,导致 mockito 测试失效了。
原因
日志组件中通过 aop 切面增强输出日志,mockito 也是这个原理。
所以二者存在冲突。
解决思路
1)将 mock 的数据设置到对应的 bean 中,解决 mock 失效问题。
2)将被 spring 代理的对象还原为原始对象,让 mockito 可以正常代理。
- 通过 spring 官方的 @MockBean 注解
方式1-设置 mock 对象
测试类:
public class HomeControllerTest extends TestCase {
private MockMvc mockMvc;
@InjectMocks
private HomeController homeController;
@Mock
private UserService userService;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
this.homeController = new HomeController();
this.mockMvc = MockMvcBuilders.standaloneSetup(this.homeController).build();
.....
}
Controller 类
public class HomeController {
@Autowired
private UserService userService;
.....
}
在这种情况下就会造成@Mock和@Autowired注入冲突,导致注入失败。
可以将测试类中加入反射注入即可:
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
this.homeController = new HomeController();
ReflectionTestUtils.setField(homeController,