运行单一测试以检查代码覆盖范围Jacoco Android

时间:2015-05-28 21:24:24

标签: android jacoco

我正在使用./gradlew createDebugCoverageReport生成我所有Android检测(Robotium)测试的代码覆盖率报告。但我需要运行所有测试才能获得覆盖率报告。如何指定执行单个测试(或单个测试类)并获取覆盖率报告?我在测试开发过程中对它进行了测试,一次运行所有测试的速度太慢了。

1 个答案:

答案 0 :(得分:0)

我知道这是一篇旧文章,但这是我的操作方式。

1。如果尚未安装,请先安装仪器测试应用程序。

(口味可能有所不同。在这种情况下,它是debug。)

// install instrumentation test app if you have not
./gradlew installDebugAndroidTest -PtestBuildType=debug

2。执行所需的测试(或测试,类,包..)。

在我的情况下,我选择了ClassName#methodName

// execute one test
adb shell am instrument -w -r --no_window_animation -e coverageFile /data/data/com.org.android.test/coverage.ec -e class 'com.org.android.ClassName#methodName', -e coverage true com.org.android.test/android.support.test.runner.AndroidJUnitRunner

请注意,我要传递2个参数:

A。 -e coverageFile /data/data/com.org.android.test/coverage.ec

B。 -e coverage true

这两个选项将在设备内生成覆盖报告。

如果您不熟悉通过adb shell am命令运行测试,请参阅this official documentation

3。然后从设备获取coverage.ec文件。

// get coverage.ec data
adb shell run-as com.org.android.test  cat /data/data/com.org.android.test/coverage.ec | cat > [YOUR_PROJECT_DIRECTORY]/build/outputs/code_coverage/debugAndroidTest/connected/coverage.exec

这里有两件事要注意。

A。您应该将[YOUR_PROJECT_DIRECTORY]更改为您的项目目录。或者,您可以将整个[YOUR_PROJECT_DIRECTORY]/build/outputs/code_coverage/debugAndroidTest/connected/coverage.exec更改为所需的任何目录和文件名。 (也许是台式机?)

B。但最终内容的扩展名应为.exec,因为jacoco仅接受那些扩展名。

4。然后使用Android Studio查看覆盖率报告。

在Android Studio中,请导航至run> Show Code Coverage Data。然后将出现一个选择窗口。选择先前生成的coverage.exec。然后,Android Studio将处理数据并向您显示coverage数据。您可以直接查看代码覆盖率数据,或进一步生成覆盖率报告。