alibaba / testable-mock

换种思路写Mock,让单元测试更简单
https://alibaba.github.io/testable-mock/
MIT License
1.83k stars 310 forks source link

@MockWith未生效 #243

Closed qijy closed 2 years ago

qijy commented 3 years ago

如题,版本0.6.10 被测试类:java下com.xxx.service.as.impl.CreateUserAImpl 测试类:test下com.xxx.service.as.impl.CreateATest mock容器类:test下com.xxx.service.as.mock.CreateUserAImplMock

在CreateATest中增加了@MockWith(CreateUserAImplMock.class) 执行过程中,CreateUserAImplMock的mock方法未生效

但若是把CreateUserAImplMock移动到com.xxx.service.as.impl包下,则CreateUserAImplMock的mock方法未生效,请问如何处理? 按照文档的说明,@MockWith是可以在任意包路径下,但我现在的做法无法使用任意包路径;

linfan commented 2 years ago

这种情况属于文档中提到的“测试类与Mock容器类均不在约定位置”的场景,测试类的类名未匹配,Mock类的包名未匹配,这时候需要同时在测试类和业务类上用@MockWith注解。但通常不建议这么做,因为会为了测试给业务类加注解,如果测试类已经不在约定位置上,建议让Mock类使用默认的约定路径和文件名。

qijy commented 2 years ago

感谢了解了,原来需要给业务代码也要加入@MockWith注解