2016-10-14 7 views
2

私は自分のローカルユニットテストのコードカバレッジを取得しようとしており、成功していません。アンドロイドはローカルユニットテストのカバレッジを取得しています

ここでは、ローカルユニットテストの意味を説明します。

https://developer.android.com/training/testing/unit-testing/local-unit-tests.html

私のユニットテストを実行するには、私は次のGradleのコマンドを使用します。

./gradlewクリーンtestDebugUnitTest

ユニットテストを実行しますが、私は「/ jacocoを構築」フォルダ内に生成されますjacocoファイル(testDebugUnitTest.ec)を表示するとき、それは常に空のカバレッジを示しています。この作業。

私はbuild.gradleファイルで次のようにカバレッジを有効にしました。

android { 
    buildTypes { 
     debug { 
      testCoverageEnabled true 
     } 
    } 
} 

しかし、それは役に立たないようです。私が紛失しているものがありますか?

Androidスタジオでローカルユニットテストを実行すると、すべて正常に動作します。私は自分の「テスト」モジュールをクリックし、「カバレッジ付きテストを実行する」をクリックします。

+0

は 'testCoverageEnabled = true'をしてみてくださいと' createDebugCoverageReport'タスクを実行しています。 – CommonsWare

+0

提案していただきありがとうございます。私は両方を試してみましたが(上記参照)、まだ運がありません:(私は "createDebugCoverageReport"タスクを実行するとアンドロイドテストのアンドロイドテストのカバレッジを追加するだけですが、ローカルユニットテストは受け付けません) – Jon

+0

私の謝罪 - – CommonsWare

答えて

4

私は自分の質問に対する答えを見つけました。奇妙なことに、 "testCoverageEnabled"フラグがセットされた状態で "testDebugUnitTest"を実行するのが正しい方法です。

しかし、明らかにgradleのjacocoバージョンがAndroid StudioとCIシステム(Jenkins)で動作しているjacocoバージョンと異なるため、jacocoの下位互換性の問題のために表示できませんでした。

問題を解決するために、私はAndroidスタジオ(Intellij)とJenkinsの同じものにgradleのjacocoバージョンを設定しました。

jacoco { 
    toolVersion = '0.7.0.201403182114' 
} 

上記のコードをbuild.gradleファイルに入れました。

+0

私はコードレポートがいつも空であった理由を理解しようとここで狂ってしまいました。 –

0

私はこの問題を自分で解決しなければならず、実際にデフォルトのgradleプラグインがローカルユニットテストのコードカバレッジをサポートすると期待していました。残念ながら、アンドロイドのgradleプラグインバージョン3.0.1でさえ、これをサポートしていません。

はしかし、幸いなことに、我々はjacocoテストレポートを生成するために使用できる簡単なサードパーティ製のプラグインがあります: gradle-android-junit-jacoco-plugin

がそれを使用するには、ルートレベルbuild.gradleには、このプラグインのリポジトリおよびクラスパスを登録する必要があります。あなたのbuild.gradleファイルが違って見えるかもしれませんが、これは私のために働いていたものです:

buildscript { 
    repositories { 

     // ... there may be other repositories here 

     maven { 
      url "https://plugins.gradle.org/m2/" 
     } 
    } 

    dependencies { 
     // ... other classpaths here too 

     classpath "gradle.plugin.com.vanniktech:gradle-android-junit-jacoco-plugin:0.11.0" 

    } 
} 

し、レポートを生成するために、一つは単純にこれを行うことができます:

./gradlew jacocoTestReportDebug 

は出力があなたのモジュールの1つになりますたとえば、次のようにします。

your-module/build/reports/coverage/debug/index.html 

注意:これはandroid gradle plugin 3.0.1で動作することを確認しました。参考のため

、私のソースはニクラス、プラグインの作成者から、この答えです:https://stackoverflow.com/a/33064500/390718

関連する問題