jacoco が実際のデバイスで実行されるインストルメンテーション テストのカバレッジ ファイルを作成する場所を定義しようとしています。
gradle タスクの実行から、--debug
次のログが表示されます。
[DEBUG] [org.gradle.api.Task] DeviceConnector 'Nexus 5X - 6.0.1': installing /home/martin/workspace/lib/my-lib/build/outputs/apk/my-lib-debug-androidTest-unaligned.apk
[INFO] [org.gradle.api.Task] Starting 1 tests on Nexus 5X - 6.0.1
[INFO] [org.gradle.api.Task] de.my.lib.utils.UtilsTest testMyTest[Nexus 5X - 6.0.1] [32mSUCCESS [0m
[DEBUG] [org.gradle.api.Task] DeviceConnector 'Nexus 5X - 6.0.1': fetching coverage data from /data/data/de.my.lib.test/coverage.ec
[DEBUG] [org.gradle.api.Task] DeviceConnector 'Nexus 5X - 6.0.1': uninstalling de.my.lib.test 13:46:14.538
[DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':my-lib:connectedDebugAndroidTest'
場所を定義するために3つの方法を試しました:
マニフェスト ファイルでタグを使用して<instrumentation>
も、何も変わりませんでした。
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="de.my.lib.test"
xmlns:android="http://schemas.android.com/apk/res/android">
<instrumentation
android:name="android.support.test.runner.AndroidJUnitRunner"
xmlns:tools="http://schemas.android.com/tools"
android:targetPackage="de.my.lib.test"
tools:replace="android:targetPackage">
<meta-data
android:name="coverage"
android:value="true" />
<meta-data
android:name="coverageFile"
android:value="/sdcard/coverage.ec" />
</instrumentation>
</manifest>
私はgradleでそれを試しましたが、出力は同じでした:
defaultConfig {
// unimportant stuff
testApplicationId "de.my.lib.test"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArgument('coverageFile', '/sdcard/coverage.ec')
}
adb
そして最後に、コマンドで試しました:
adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec de.my.lib.test/android.support.test.runner.AndroidJUnitRunner
しかし、2つのエラーが発生します:
de.my.lib.utils.UtilsTest:. クラスが見つかりませんでした: org.jacoco.agent.rt.internal_773e439.CoverageTransformer 。時間: 0,072
OK (1 回のテスト)
エラー: エマ カバレッジの生成に失敗しました。
私はここで完全に迷っています。何か案は?
背景別の場所に保存する必要がある理由:adb shell run-as
一部のデバイスと Android バージョンにはコマンドにバグがあるため、テスト デバイス ファームにデバイスがあり、ファイルを取得できないために 0% のカバレッジを返します。そのため、ファイルを公開されている場所に保存する必要があります。