alibaba / testable-mock

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

单元测试类所在包路径能否自定义? #255

Open shuijiayou opened 2 years ago

shuijiayou commented 2 years ago

现在这个工具要求单元测试类包路径必须严格与项目所在包路径相同,否则就无法产生mock效果。但是我个人更喜欢在测试类所在包路径添加一个junit包,用以区分类所在的位置。目前翻阅文档并没有看到相关设置。同时,对mock的测试类命名要求也是十分严格,如果能够有类似PowerMockito.spy(mockService)功能的函数,我觉得会更为方便一些。不知道后续会不会有这种功能。

linfan commented 2 years ago

测试包路径不一致的问题应该可以用包路径映射的功能来解决,添加类似如下配置:

mock.package.mapping.com.abc = com.abc.junit

由于TestableMock设计时候主要考虑的是在“规范化”的单元测试中如何尽可能降低使用Mock的难度,非标准场景的单元测试确实是它的弱项。许多对于非标准情况的适配功能,包括包映射、MockWith等都是后来补充的,这些功能在一定程度上扩展了TestableMock的适用范围,但也带来了一些上手成本。

Mockito/PowerMockito的Mock粒度是整个类型,而TestableMock的Mock粒度是单个调用,从效果上原本就类似spy,即除非显示声明为Mock,否则默认是走正常业务逻辑,不需要有spy(被测对象)这样的声明。