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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种在多个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类的app(定位器:R.id。*)

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

答案

我想要不同的测试运行器用于不同类型的测试

要使用特定测试运行器运行测试类,请使用@RunWith批注。

也针对不同的变种

要定位特定变体,请在app/src/androidTestVariantName中为仪器化测试创建测试,或在app/src/testVariantName中为单元测试创​​建测试。

以上是关于一种在多个android测试模块之间共享代码的方法的主要内容,如果未能解决你的问题,请参考以下文章

Android GeoLocation FireStore:一种在用户关闭位置共享选项后阻止谷歌服务获取用户地理点的方法

在不同的测试目标之间有效地共享测试替身

如何在多个 OCUnit 测试用例之间共享代码?

Laravel - 在多个独立的代码库之间共享功能

Android:如何在使用相同证书签名的项目之间共享代码

接口测试