关于@MockInvoke使用的隐含规则描述
使用 @MockInvoke注意事项
一、在测试类中配置(建议)
1.在测试类中创建一个内部类,类名必须是Mock
在内部类中编写@MockInvoke相关代码
2.测试类必须与被测试的类在同一个包下
3.测试类的类名必须是被测试类类名+Test
二、在Mock类中配置
1.创建一个Mock类,类名为被测试类类名+Mock
2.Mock类必须与被测试的类在同一个包下
请问以上描述是否正确?
正确。
TestableMock使用默认约定命名来简化配置,这种约定方式本身符合单元测试的最佳实践(测试类命名为被测类+Test,使用相同包路径),统一的单测规则有助于提高代码可读性和可维护性。
对于确实不符合约定的情况,也可以通过@MockWith等辅助注解来进行适配。
正确。
TestableMock使用默认约定命名来简化配置,这种约定方式本身符合单元测试的最佳实践(测试类命名为被测类+Test,使用相同包路径),统一的单测规则有助于提高代码可读性和可维护性。对于确实不符合约定的情况,也可以通过
@MockWith等辅助注解来进行适配。
@linfan 您好,我的项目里都是按配置一使用Mock的,但是最近单元测试类越来越多,发现某些测试类在单独执行时可以通过,但是多个测试类/包的同时执行就会报错,有时候甚至在一个测试类下执行多个测试方法也会报错。报错的原因就是mock方法没有走进去。目前我通过修改maven-surefire-plugin,添加如下配置来解决这个问题。
<reuseForks>false</reuseForks><forkount>3</forkCount>
测试方法里面使用了很多MOCK_CONTEXT,但最后我都会在@AfterAll里调用MOCK_CONTEXT.clear()。
有时候甚至在一个测试类下执行多个测试方法也会报错,这个问题我就是使用了MOCK_CONTEXT,奇怪的是,我没有往里面放任何值,甚至手动设置了false,但多个测试方法执行的时候,还是走到了mock方法里的true分支,最后我把当前测试类的MOCK_CONTEXT去了,直接使用当前测试类的Map属性,问题解决。