一种在多个android测试模块之间共享代码的方法

一种在多个android测试模块之间共享代码的方法,android,android-gradle-plugin,android-testing,android-instrumentation,Android,Android Gradle Plugin,Android Testing,Android Instrumentation,我想实现这样的目标: [ComponentTestsModule] com.android.test [FunctionalTestsModule] com.android.test both depends on -> [TestLibraryModule] ? which depends on -> [AppModule] com.android.application 安卓Gradle插件3.0+有什么方法可以做到这一点吗 为什么我需要多个测试模块? 我希望针对不同类

我想实现这样的目标:

[ComponentTestsModule] com.android.test
[FunctionalTestsModule] com.android.test
both depends on
 -> [TestLibraryModule] ?
which depends on
   -> [AppModule] com.android.application
安卓Gradle插件3.0+有什么方法可以做到这一点吗

为什么我需要多个测试模块? 我希望针对不同类型的测试使用不同的测试运行程序,也针对不同的变体。 它现在正在使用
androidTest
下的单个代码库,但在自定义测试运行程序中使用丑陋的开关

为什么我需要一个测试库模块? 我想在不同类型的测试之间共享相同的页面对象,也许还有一些实用程序代码。 问题是:页面对象必须能够访问应用程序的R类(定位器:R.id.*)

除了
com.android.test
,我所知道的所有模块类型都不能依赖于APK生成模块,但我不能依赖
com.android.test
和另一个
com.android.test

我希望不同类型的测试有不同的测试人员

要使用特定的测试运行程序运行测试类,请使用
@RunWith
注释

还针对不同的变体


要针对特定的变体,请在
app/src/androidTestVariantName
中为插入指令的测试创建测试,或在
app/src/testVariantName
中为单元测试创建测试。

我最近遇到了这个问题,只想分享我的解决方案,以防有人需要它

到目前为止我所做的(我想这不是一个完美的解决方案,但至少它是有效的)

  • 创建一个新的
    模块
    ,名为测试库或类似的东西

  • 测试库中
    模块
    将与测试相关的内容(如您希望在模块之间共享的代码)放入普通包中,而不是放入测试包/文件夹中

  • 从其他模块中,尝试从测试库
    模块导入内容

  • 例如:
    testImplementation项目(“:testing\u base”)


    希望它能帮助别人,快乐测试

    你找到解决办法了吗?没有,还是没有线索