【问题标题】:A way to share code between multiple android test modules一种在多个 android 测试模块之间共享代码的方法
【发布时间】:2020-01-28 23:45:13
【问题描述】:

我想实现这样的目标:

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

android Gradle plugin 3.0+有什么办法吗?

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

我希望针对不同类型的测试使用不同的测试运行器,同时针对不同的变体。 它现在正在使用androidTest 下的单个代码库,但自定义测试运行器中的开关很难看。

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

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

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

【问题讨论】:

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

标签: android android-gradle-plugin android-testing android-instrumentation


【解决方案1】:

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

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

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

  2. testing_base module only 放置与 testing 相关的内容(例如您希望在模块之间共享的代码) 到普通包中,不在测试包/文件夹中

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

例如:testImplementation project(":testing_base")

希望对大家有所帮助,祝测试愉快!

【讨论】:

  • d= (◕‿↼) 谢谢!不幸的是,创建一个新库是将测试代码与常规代码分开的唯一方法。
【解决方案2】:

我希望针对不同类型的测试使用不同的测试运行器

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

还针对不同的变体

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

【讨论】:

  • 这与问题有什么关系?
  • @Rafsanjani 怎么不是?我明确引用了我在此答案中要解决的问题中的要点。
猜你喜欢
  • 2016-10-19
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多