我正在使用./gradlew createDebugCoverageReport
生成我所有Android检测(Robotium)测试的代码覆盖率报告。但我需要运行所有测试才能获得覆盖率报告。如何指定执行单个测试(或单个测试类)并获取覆盖率报告?我在测试开发过程中对它进行了测试,一次运行所有测试的速度太慢了。
答案 0 :(得分:0)
我知道这是一篇旧文章,但这是我的操作方式。
(口味可能有所不同。在这种情况下,它是debug
。)
// install instrumentation test app if you have not
./gradlew installDebugAndroidTest -PtestBuildType=debug
在我的情况下,我选择了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。
// 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仅接受那些扩展名。
在Android Studio中,请导航至run
> Show Code Coverage Data
。然后将出现一个选择窗口。选择先前生成的coverage.exec
。然后,Android Studio将处理数据并向您显示coverage数据。您可以直接查看代码覆盖率数据,或进一步生成覆盖率报告。