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

Tho*_*vik 15 android jacoco

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

Che*_*eon 2

我知道这是一篇旧文章,但我是这样做的。

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

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

// install instrumentation test app if you have not
./gradlew installDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

A、-e coverageFile /data/data/com.org.android.test/coverage.ec并且,

B.-e coverage true

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

如果您不熟悉通过adb shell am命令运行测试,请参阅此官方文档

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
Run Code Online (Sandbox Code Playgroud)

这里有两件事需要注意。

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将处理数据并向您显示覆盖率数据。您可以直接查看代码覆盖率数据,或者进一步生成覆盖率报告。