如何在多模块 gradle 项目中提供测试数据和类



我想为下游模块提供来自上游模块的测试数据/类。最好的方法是什么?

假设我有以下模块:

: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。 没有口味可以吗?

有两种方法

  1. 在与主 jar 相同的项目中创建一个测试罐,该测试罐可用作其他项目中的测试依赖项。这个罐子将是src/test/java(编译)和src/test/resources的组合
  2. 为公共测试实用程序创建一个单独的项目,该项目可用作其他项目中的测试依赖项

我自己更喜欢选项 2,因为我觉得这是最干净的方法,因为您将您想要的内容准确地放在 jar 中(测试实用程序、抽象基类、测试资源等),并且您不包含实际测试在 jar 中。

有关选项 1,请参阅星云测试jar插件。请注意,星云已弃用此插件,转而支持选项 2

相关内容

最新更新