我可以按照以下步骤获取代码覆盖率报告,
启用所需构建类型的覆盖范围(例如,调试)
buildTypes {
debug {
testCoverageEnabled true
}
}
应用Jacoco插件并设置版本
apply plugin: 'jacoco'
jacoco {
version "0.7.1.201405082137"
}
跑
./gradlew createDebugCoverageReport
运行connectedAndroidTest中的所有测试,并基于它们生成覆盖率报告.我可以在中找到报道报道
app/build/outputs/reports/coverage/{buildType}/index.html
和一个coverage.ec文件
app/build/outputs/code-coverage/connected/coverage.ec
但是没有jacoco.exec,因为我从Android Instrumentation而不是Robolectric测试用例运行.
当我从ADB运行仪器(我猜这仍然使用Emma)如下所示,我得到一个coverage.ec文件,如下所示,
$ adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec com.sample.helloworld.test/.Runner
....
OK (4 tests)
Generated code coverage data to /sdcard/coverage.ec
Run Code Online (Sandbox Code Playgroud)
但由于coverage.em文件丢失,我无法将coverage.ec转换为使用emma报告,
java -cp ~/adt-bundle-mac-x86_64-20130729/sdk/tools/lib/emma_device.jar emma report -r html -in \
coverage.em,myFile.ec,myapp_coverage1.ec -sp /path/to/myapp/src
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?
我想按如下方式对查找结果进行排序:
我在用:
find . -type f -print0
Run Code Online (Sandbox Code Playgroud)
结果是:
/mnt/sdcard/qu/led/t1/temp42.txt
/mnt/sdcard/qu/led/File.plist
/mnt/sdcard/qu/yellow.plist
/mnt/sdcard/SHA1Keys/SHA1SUMS
/mnt/sdcard/File.xml
/mnt/sdcard/File.plist
/mnt/sdcard/.DS_Store
Run Code Online (Sandbox Code Playgroud)
但我希望结果如下:
/mnt/sdcard/.DS_Store
/mnt/sdcard/File.plist
/mnt/sdcard/File.xml
/mnt/sdcard/SHA1Keys/SHA1SUMS
/mnt/sdcard/qu/yellow.plist
/mnt/sdcard/qu/led/File.plist
/mnt/sdcard/qu/led/t1/temp42.txt
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
find . -type f print0 | sort -r
Run Code Online (Sandbox Code Playgroud)
订单搞砸了.我在某处看到了这个解决方案:
find . -type f -ls | awk '{print $(NF-3), $(NF-2), $(NF-1), $NF}'
Run Code Online (Sandbox Code Playgroud)
但我不能使用它,因为它打印结果.
另请注意,我没有权限写入文件系统,因此写入文件并反转行不是一种选择.