本文档介绍了如何通过命令行直接运行 Android 应用的测试。在您已经了解如何创建 Android 应用并为应用编写测试的前提下,本文将为您提供详细的操作指南。如果您想详细了解如何为应用构建测试,请参阅“在 Android 平台上测试应用”。
当您使用 Gradle 构建系统构建应用时,Android Gradle 插件可让您使用命令行从 Gradle 项目运行测试。此外,您还可以选择通过 Android 调试桥 (adb) shell 运行测试,这在持续集成环境中非常有用。如果您想了解如何使用 Gradle 为您管理的虚拟设备从命令行运行自动插桩测试,请参阅“使用 Gradle 管理的设备来扩展测试”。
以下是使用 Gradle 运行测试的方法:
1. 通过 `./gradlew test` 命令运行单元测试。
2. 通过 `./gradlew connectedAndroidTest` 命令运行连接的 Android 测试。
3. 通过 `./gradlew cAT` 命令运行单元测试和连接的 Android 测试。
4. 通过 `checkconnectedCheck` 命令运行连接的 Android 测试。
5. 在模块上运行特定的测试方法或类,例如:`testconnectedAndroidTesttestconnectedAndroidTestmylibrary`。
6. 在模块上运行特定构建变体下的测试,例如:`./gradlew mylibrary:connectedAndroidTest`。
7. 在所有构建变体上运行单元测试,例如:`./gradlew test`。
8. 在特定构建变体上运行 Android 测试,例如:`./gradlew connected`。
9. 运行特定的测试方法或类,例如:`--tests sampleTestMethod --tests '*.sampleTestMethod'`。
10. 使用 adb 从命令行运行测试,您可以获得比任何其他方法更多的选项来选择要运行的测试。您可以选择单独的测试方法,根据自定义注解筛选测试,或指定测试选项。由于测试任务完全由命令行控制,因此您可以通过各种方式使用 Shell 脚本自定义测试。
db shell aminstrument
am instrument
am instrument
STDOUT
am instrument 标记
am instrument -e package com.android.test.package1,com.android.test.package2 > com/android/test/androidx.test.runner.AndroidJUnitRunner 选项
am instrument
-e <key> <value>
AndroidJUnitRunner包名
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \ > com/android/test/androidx.test.runner.AndroidJUnitRunner
下表列出了可针对测试运行程序使用的键值对:
表3。
可与测试运行程序搭配使用的 -e 标记键值对
package
class
#method namefunctrueunittrueInstrumentationTestCasesizesmallmediumlarge@SmallTest@MediumTest@LargeTestperftruePerformanceTestCaseam instrument-rdebugtruelogtrueSTDOUTemmatrue/data/
/coverage.eccoverageFilecoveragecoverageFile
emma
-e
am instrumentonCreate(Bundle)Bundlepackageclassfuncunit用法示例
am instrument
com.android.demo.app.testsTestClass1testMethod1TestClass2testMethod2testMethod3AndroidJUnitRunner
要运行整个测试软件包,可以输入以下命令:
```adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
```
如果要运行测试软件包中的所有测试类,可以输入以下命令:
```adb shell am instrument -w \> -e class com.android.demo.app.tests.TestClass1 \> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
```
如果只想运行测试用例类中的所有测试,可以使用以下命令,其中`TestClass1`是你要运行的测试类名:
```adb shell am instrument -w \> -e class com.android.demo.app.tests.TestClass1 \> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
```
如果你只想运行一部分测试,例如`TestClass1TestClass2testMethod3`,可以使用以下命令:
```adb shell am instrument -w \> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
```