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

时间:2017-09-12 20:14:27

标签: android gradle kotlin

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

我们说我有以下模块:

TransactionsCache - 有一个接口TransactionDbCache。默认情况下,此模块将提供:ui-transactions,使用SQLite支持此缓存。

TransactionsCache - 需要:data-transactions的实例来向用户显示交易。此模块依赖于:ui-transactions

我想要什么

  • 在测试TransactionsCache时,我想提供TransactionsInMemoryCache的虚假实现,例如:data-transactionsTransactionsInMemoryCache的其他下游模块也可能需要TransactionsInMemoryCache。此类不应包含在非测试模块中。
  • internal这样的测试依赖项应该能够利用kotlin :data-transactions可见性修饰符 - 即与srcSets
  • 位于同一模块中

我猜这里的解决方案与testHelper和特殊parse配置有关吗?

注意:这是针对Android的,所以我需要生成一个APK。这可能没有味道吗?

1 个答案:

答案 0 :(得分:1)

有两种方法

  1. 在与主jar相同的项目中创建一个测试jar,它可以在其他项目中用作测试依赖项。这个jar将是src/test/java(已编译)和src/test/resources
  2. 的组合
  3. 为常用测试实用程序创建一个单独的项目,可以在其他项目中用作测试依赖项
  4. 我,我自己,更喜欢选项2,因为我觉得它是最干净的方法,因为你把你想要的东西放在jar中(测试实用程序,抽象基类,测试资源等)并且你不喜欢它。包括罐子里的实际测试。

    请参阅nebula-test-jar插件以获取选项1.请注意,星云已弃用此插件而支持选项2