Gradle 只执行 uiTests 的任务

Gradle task to only execute uiTests

我有这个 Android,默认的 Gradle 任务。在 Android-project 中,有一个 androidTest 包,包含 integrationTestsuiTests。我还有两个 Kotlin 类,其中包含一套要调用的测试 类。

但是,./gradlew connectedAndroidTest 运行既是integrationTests又是uiTests,我想把这个分开。我想出了多种解决方案:

  1. Android Studio 的 运行 配置。然而,这并没有签入 VCS,因此我们无法访问我们的 Jenkins 构建服务器。
  2. 使用 Groovy 语言添加 Gradle 任务,但是不鼓励在新任务中调用另一个 gradle 任务。

所以我正在寻找一种方法来只测试 integrationTestsuiTests。我该怎么做?

我现在要给你一个廉价而愉快的答案。也许其他人能够提供更完整的。

由于所有测试似乎都是同一个源集的一部分,您需要以其他方式区分它们。最合适的解决方案是您的测试库具有用于 分组 的任何机制,然后您可以 utilise from Gradle.

或者,使用命名约定之类的东西来区分 UI 测试和集成测试。

接下来您要做什么取决于您希望构建如何处理这些不同的类别。主要选项包括:

  1. 从命令行使用 test filtering - 通过 --tests 选项 - 运行 只是集成或 UI 测试。请注意,过滤只能通过 class 名称进行,因此您必须使用命名约定方法。

  2. 配置适当的 Test 任务——是 connectedAndroidTest 吗? — 因此,如果您设置一个特定的项目 属性,它将 运行 集成测试或 UI 测试基于该项目的价值 属性。这涉及在配置中使用 if 条件。这种方法适用于过滤和分组。

  3. 添加两个额外的 Test 任务,一个执行集成测试,一个执行 UI 测试。你会保持 connectedAndroidTest 不变。这是我的首选方法,但比其他方法需要更多代码。

这个答案缺少很多关于如何实施这些解决方案的细节,但恐怕现在填写这些细节对我来说太费时了。正如我所说,希望有人能给出更完整的答案。