0

現在、Android での GUI 自動テストについて研究していますが、何らかの理由で、手動テストからコード カバレッジ レポートを生成できるツールが必要です。長い間検索した後、私はそれを見つけ、Jacoco彼らEmmaのウェブサイトで手動アプローチについて言及しました. up-to-date-working exampleしかし、残念ながら、インターネット上にはありません。

https://groups.google.com/forum/#!searchin/jacoco/manual $20android%7Csort:date/jacoco/vx0g_6TKY8Q/0Tg3fX84CAAJなど、多くの提案ソリューションを試しました。

それは coverage.exec を生成しましたが、ファイルのサイズはわずか数バイトでした (もちろん、Jacoco はそこからレポートを生成できませんでした)。

これが私が試したことです: https://github.com/kindraywind/MyDummy

app/build.gradle 内

apply plugin: 'jacoco'
jacoco {
toolVersion ="0.7.8+"  //I did try "0.7.4+" as the suggest.
}

task jacocoTestReport(type: JacocoReport) { … }

jacoco-agent.properties 内

destfile=/storage/sdcard/coverage.exec

app/src/main/AndroidManifest.xml 内`

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

MainActivity.java 内

protected void onStop()
{
super.onStop();
if(BuildConfig.DEBUG)
{
String TAG = "jacoco";
try {
String covPath = Environment.getExternalStorageDirectory().getPath() +     "/coverage.exec";
File coverageFile = new File(covPath);
Class<?> emmaRTClass = Class.forName("com.vladium.emma.rt.RT");
Method dumpCoverageMethod =        emmaRTClass.getMethod("dumpCoverageData",coverageFile.getClass(),     boolean.class, boolean.class);
dumpCoverageMethod.invoke(null, coverageFile, true, false);
} catch (Exception e) {
}

}

}

エミュレーターは Nexus 5 API 19 です (ほとんどのバージョンを試しました)。

デバイス EMMA からのログ: ランタイム カバレッジ データが [/storage/sdcard/coverage.exec] にマージされました {8 ミリ秒で}

実行後のログ ./gradlew jacocoTestReport Unable to read execution data file /Users/MyDummy/app/coverage.exec

関連する場合、OSX10.12.3を使用しています。

要約すると、コード カバレッジを取得する方法 (または実際の例) を知る必要があります。

  • アプリを手動でテストします。
  • Android アプリケーションで。
  • MavenやAntではなくGradleを使用しています。
  • Android Studio は Eclipse ではありません。

解決策が見当たらないので、助けていただければ幸いです。

4

1 に答える 1