【问题标题】:Run all unit tests in Android Studio在 Android Studio 中运行所有单元测试
【发布时间】:2017-04-28 06:12:00
【问题描述】:

我在 Android Studio 中有这个项目:

我希望一键运行所有项目中的所有单元测试。

我该怎么做?

【问题讨论】:

  • 到目前为止的所有答案都提供了一个选项,但不要使用 Android Studio 测试运行器(它允许您跳转到源代码、快速查看测试结果等)。为了使用这些功能,您只需创建一个针对整个项目测试的新运行配置。我在下面的回答中详细说明了这些步骤:stackoverflow.com/a/56192783/2441420

标签: android unit-testing android-studio android-instrumentation


【解决方案1】:

不确定这是在哪个版本的 Android Studio 中添加的,但我使用的是 Android Studio 3.4

在项目浏览器窗口中,选择项目视图

右键单击您的根项目并选择“创建‘所有测试’...”

...将出现此窗口(这些默认值需要更改)

更改以下选项:

  • 搜索测试:

    • 在整个项目中
  • JRE:

    • 您在此菜单中可用的最新版本的 Android API __ 平台(对我来说,Android API 28 平台
  • 点击应用

  • 从下拉菜单中选择“所有测试”

  • 查看所有测试的输出

【讨论】:

  • 最后——这实际上是您在签入代码之前应该做的最常见的事情!如果不清楚,也可以通过“运行/调试”下拉组合中的“编辑配置...”选项来完成。我不必更改默认的 JRE。我希望 Android Instrumented Tests 有类似的东西,但它们必须基于每个模块创建,因为它们似乎不支持在整个项目中搜索测试。
  • 嗨,我正在尝试通过命令行运行单元测试(对于我的 CI 服务器),它始终适用于 Android Studio,但不适用于命令行,因为它总是提供 java.util. lang.ClassNotFoundException 错误。一段时间后,我了解到有一些不同的东西。当我从 AS 运行测试时,它说 Executing tasks: [:lib_view:generateDebugSources, ...] 似乎 ./gradlew test 跳过 generateDebugSources 任务所以它找不到类,你知道 AS 运行什么命令当我们点击运行测试?
  • 这似乎只适用于单元测试。 androidTests 呢?
  • 这确实应该作为默认配置内置。 ?
【解决方案2】:

首先,您可以列出项目中所有可用的测试任务

./gradlew tasks

然后您可以选择要执行的任务。如果你想为所有风格和所有 buildTypes 执行所有测试,你只需要运行

./gradlew test connectedAndroidTest

如果不想每次运行测试时都记住所有的 gradle test 命令,可以创建一个文件“custom_tasks.gradle”并添加

task testAll(dependsOn: ['test', 'connectedAndroidTest']) {
   group = 'custom_tasks'
   description = "Run all tests"
}

然后,你只需要运行

./gradlew testAll

【讨论】:

  • 我刚刚将任务添加到我的应用程序的 gradle 文件并将组行更改为group = 'Verification',感谢您的建议!
  • 但是问题是关于android studio的,他特别提到了一键也很明显,我也是因为它。但是这个答案是通过 gradle 从命令行运行的。更好的答案是,不,使用 android studio test runner 是不可能的。
  • @Renetik testAll 任务将出现在 Android Studio 的 Gradle 对话框中,您可以在其中“双击”它来运行它!两次点击,我知道,但我们可以让那一张幻灯片不是吗?
  • @Renetik 可以使用 Android Studio 测试运行器运行测试。简而言之,您必须创建一个针对所有项目测试的运行配置。详情请看我的回答:stackoverflow.com/a/56192783/2441420
【解决方案3】:
  1. 在“项目”面板中(CMD+1 显示)右键单击“java”。
  2. 点击“在 Java 中运行测试”

【讨论】:

  • 这也忽略了一些测试
  • 这仅在该目录中运行测试。 OP 正在询问项目中的所有测试目录
  • 这不再可用
  • 从 AS 3.3.2 开始,这对我有效,单击 2 次即可运行我的所有测试,一个在 androidTest/java 上,另一个在 src/test/java
  • @IgorGanapolsky 从 Android Studio 3.4 开始。诀窍是为项目中的所有测试创建另一个运行配置。有关详细信息,请参阅我的答案:stackoverflow.com/a/56192783/2441420
【解决方案4】:

使用 AndroidStudio ArcticFox 的方法如下:

在运行配置下的工具栏中选择“编辑配置”

选择 (+) 添加新配置并选择 Gradle:

在配置页面上:

  • 为配置指定一个名称(运行所有单元测试)
  • 选择您的根项目作为 Gradle 项目
  • 添加 Tasks cleanTestDebugUnitTest testDebugUnitTest(您可以从现有配置中复制它以进行单元测试,但请确保删除模块前缀(例如 :app:))
  • --tests "*" 添加为 Arguments(显然是告诉 AS 将结果显示为 TestResults)

选择并运行您的新配置。结果将显示在运行窗口中:

【讨论】:

  • cleanTestDebugUnitTest 是干什么用的?
  • @mikeD cleanTestDebugUnitTest 据我所知,首先用于清理构建。它通常由 AS 在您手动运行的每个单元测试配置中添加。 (我经常删除它以节省一些时间)
【解决方案5】:

你可以尝试在安卓终端上使用这个命令行: 麦克:

./gradlew test connectedAndroidTest

窗户:

gradlew test connectedAndroidTest

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2017-02-27
    • 2020-07-23
    • 2013-07-29
    • 2020-05-05
    • 2017-10-18
    相关资源
    最近更新 更多