我想为下游模块提供来自上游模块的测试数据/类。最好的方法是什么?
假设我有以下模块:
:data-transactions
- 具有接口TransactionsCache
。默认情况下,此模块将提供一个使用 SQLite 支持此缓存的TransactionDbCache
。
:ui-transactions
- 需要TransactionsCache
实例才能向用户显示事务。此模块依赖于:data-transactions
。
我想要什么
- 在测试
:ui-transactions
时,我想提供一个TransactionsCache
的假实现,就像TransactionsInMemoryCache
一样。:data-transactions
的其他下游模块也可能需要TransactionsInMemoryCache
。此类不应包含在非测试模块中。 - 这些像
TransactionsInMemoryCache
这样的测试依赖项应该能够利用 kotlin 这个internal
可见性修饰符 - 即与:data-transactions
位于同一模块中
我猜这里的解决方案与srcSets
和特殊的testHelper
配置有关?
注意:这是针对安卓的,所以我需要生成一个APK。 没有口味可以吗?
有两种方法
- 在与主 jar 相同的项目中创建一个测试罐,该测试罐可用作其他项目中的测试依赖项。这个罐子将是
src/test/java
(编译)和src/test/resources
的组合 - 为公共测试实用程序创建一个单独的项目,该项目可用作其他项目中的测试依赖项
我自己更喜欢选项 2,因为我觉得这是最干净的方法,因为您将您想要的内容准确地放在 jar 中(测试实用程序、抽象基类、测试资源等),并且您不包含实际测试在 jar 中。
有关选项 1,请参阅星云测试jar插件。请注意,星云已弃用此插件,转而支持选项 2