在 Android Studio 中运行所有单元测试
Posted
技术标签:
【中文标题】在 Android Studio 中运行所有单元测试【英文标题】:Run all unit tests in Android Studio 【发布时间】:2017-04-28 06:12:00 【问题描述】:我在 android Studio 中有这个项目:
我希望一键运行所有项目中的所有单元测试。
我该怎么做?
【问题讨论】:
到目前为止的所有答案都提供了一个选项,但不要使用 Android Studio 测试运行器(它允许您跳转到源代码、快速查看测试结果等)。为了使用这些功能,您只需创建一个针对整个项目测试的新运行配置。我在下面的回答中详细说明了这些步骤:***.com/a/56192783/2441420 【参考方案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 测试运行器运行测试。简而言之,您必须创建一个针对所有项目测试的运行配置。详情请看我的回答:***.com/a/56192783/2441420
developer.android.com/studio/test/command-line【参考方案3】:
-
在“项目”面板中(CMD+1 显示)右键单击“java”。
点击“在 Java 中运行测试”
【讨论】:
这也忽略了一些测试 这仅在该目录中运行测试。 OP 正在询问项目中的所有测试目录 这不再可用 从 AS 3.3.2 开始,这对我有效,单击 2 次即可运行我的所有测试,一个在 androidTest/java 上,另一个在 src/test/java @IgorGanapolsky 从 Android Studio 3.4 开始。诀窍是为项目中的所有测试创建另一个运行配置。有关详细信息,请参阅我的答案:***.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
【讨论】:
以上是关于在 Android Studio 中运行所有单元测试的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio - Junit 4 - 在所有测试之前运行代码
在 Android Studio 中运行参数化单元测试时,未找到给定的测试包括错误