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



我想实现这样的目标:

[ComponentTestsModule] com.android.test
[FunctionalTestsModule] com.android.test
both depends on
-> [TestLibraryModule] ?
which depends on
-> [AppModule] com.android.application

有没有任何方法可以用android Gradle插件3.0+做到这一点?

为什么我需要多个测试模块

我想要不同类型测试的不同测试运行程序,也针对不同的变体。它现在在androidTest下使用单个代码库,但在自定义测试运行器中使用了丑陋的开关。

为什么我需要一个测试库模块

我想在不同类型的测试之间共享相同的页面对象,也许还有一些实用程序代码。问题是:页面对象必须访问应用程序的R类(定位器:R.id*(

据我所知,除了com.android.test之外,没有一种模块类型可以依赖于APK生成模块,但我不能依赖于com.android.test和另一个com.android.test

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

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

  1. 创建一个名为testing_base或类似的新module

  2. testing_basemodule中,只有将与测试相关的东西(就像您希望在模块之间共享的代码一样(放在正常包中,不放在测试包/文件夹中

  3. 从其他模块,尝试从testing_basemodule导入东西

例如:testImplementation project(":testing_base")

希望它能帮助到别人,测试愉快!

我想要不同类型的测试的不同测试运行程序

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

还针对不同的变体

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

相关内容

  • 没有找到相关文章

最新更新