在Android Studio中运行所有单元测试

112

我在Android Studio中有这个项目:

输入图像描述

我希望能够通过单击一次来运行所有项目中的单元测试。

我该怎么做?


到目前为止,所有的答案都提供了一个选项,但没有使用Android Studio测试运行程序(它允许您跳转到源代码,快速查看测试结果等)。为了使用这些功能,您只需要创建一个新的运行配置,以针对整个项目的测试。我在下面的答案中详细说明了这些步骤:https://dev59.com/6lgR5IYBdhLWcg3wnORw#56192783 - blueberry_chopsticks
您可以查看以下帖子:https://dev59.com/51kS5IYBdhLWcg3wRUur#71138713 - Rasoul Miri
8个回答

80

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

Android Studio Version 3.4

在项目资源管理器窗口中,选择{{项目视图}}。

Project View Select

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

Create 'All Tests'

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

Default edit config window

更改以下选项:

  • 搜索测试:

    • 整个项目中
  • JRE:

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

Edited Test configuration

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

enter image description here

  • 查看所有测试的输出

enter image description here


2
最后 - 这实际上是在检查代码之前你应该做的最常见的事情!如果不清楚,也可以通过“运行/调试”下拉组合框中的“编辑配置...”选项完成。我没有必要从默认设置更改JRE。我希望Android仪器化测试也有类似的功能,但它们必须基于每个模块创建,因为它们似乎不支持在整个项目中搜索测试。 - Rupert Rawnsley
4
你好,我正在尝试通过命令行运行单元测试(用于我的CI服务器),在Android Studio中它总是能正常运行,但是在命令行中却不行,因为它总是报java.lang.ClassNotFoundException错误。过了一会儿,我发现两者之间有所不同。当我从AS中运行测试时,它会显示“执行任务:[:lib_view:generateDebugSources, ...]”,似乎./gradlew test跳过了generateDebugSources任务,所以找不到类。你知道我们在点击运行测试时AS运行了什么命令吗? - Fadel Trivandi Dipantara
3
这似乎只适用于单元测试。那么对于androidTests呢? - Adam Johns
1
这个应该作为默认配置内置。 - xavierdominguez
这是一个令人惊讶的步骤数量! - undefined

58

首先,您可以使用以下命令列出项目中所有可用的测试任务:

./gradlew tasks

然后,您可以选择要执行的任务。如果您想要执行所有口味和所有构建类型的所有测试,则只需运行

./gradlew test connectedAndroidTest

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

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

然后,你只需运行

./gradlew testAll

我刚刚将任务添加到我的应用程序gradle文件中,并将组行更改为“group ='Verification'”,感谢您的建议! - davidicus
1
但问题是关于Android Studio的,他特别提到了“一键”,所以很明显我也在这里。但是这个答案是通过命令行运行Gradle的...更好的答案应该是,不,使用Android Studio测试运行器是不可能的。 - Renetik
1
@Renetik,“testAll”任务将出现在Android Studio的Gradle对话框中,您可以“双击”它来运行它!我知道需要两次点击,但我们可以容忍这一点,不是吗? - droppin_science
@Renetik 可以使用 Android Studio 测试运行器来运行测试。简而言之,您需要创建一个运行配置,以针对项目的所有测试。有关详细信息,请参见我的答案:https://dev59.com/6lgR5IYBdhLWcg3wnORw#56192783 - blueberry_chopsticks
https://developer.android.com/studio/test/command-line - Saba

37

使用AndroidStudio ArcticFox的方法如下:

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

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

Add configuration

在配置页面上:
  • 给配置一个名称(运行所有单元测试)
  • 将您的根项目选择为Gradle项目
  • 添加任务cleanTestDebugUnitTest testDebugUnitTest(您可以从现有的单元测试配置中复制,但请确保删除模块前缀(例如::app:))
  • [最新AS版本似乎不需要此步骤] 将--tests“*”添加为参数(显然这告诉AS将结果显示为TestResults)

configuration

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

2
cleanTestDebugUnitTest 是用来做什么的? - mikeD
3
据我所知,@mikeD 中的 cleanTestDebugUnitTest 是用于首先清理构建的。通常情况下,AS 会在您手动运行每个单元测试配置时都添加它。(为了节省时间,我经常将其删除) - Benjamin Mesing

22
  1. 在“项目”面板中(CMD+1 显示),右键单击“java”。
  2. 点击“在Java中运行测试”

这忽略了一些测试。 - Ahmed Adel Ismail
20
仅在该目录中运行测试。OP正在询问项目中所有测试目录。 - Gak2
4
不再可用。 - IgorGanapolsky
截至AS 3.3.2,这对我有效,只需2次点击即可运行所有测试,一次在androidTest/java上,另一次在src/test/java上。 - Pure Function
1
@IgorGanapolsky 这是针对Android Studio 3.4版本的。诀窍在于为项目中的所有测试创建另一个运行配置。有关更多详细信息,请参见我的答案:https://dev59.com/6lgR5IYBdhLWcg3wnORw#56192783 - blueberry_chopsticks

12

你可以尝试在Android终端上使用以下命令行: Mac:

./gradlew test connectedAndroidTest

Windows:

gradlew test connectedAndroidTest

1

打开 Android Studio Giraffe | 2022.3.1

  1. 在右上方打开 Gradle 面板
  2. 项目名称 -> 任务 -> 验证 -> 点击 "testDebugUnitTest" (Debug 是你的变体)

0

enter image description here

如果您在cmd中运行命令时遇到问题,可以在Android Studio中运行该命令

  1. 在Android Studio右侧单击Gradle。

  2. 单击“执行Gradle任务”图标

  3. 输入命令“gradle test connectedAndroidTest”,然后按Enter键


0
在终端中输入:./gradlew testDebugUnitTest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接