Gradleの仕組みや、hereなどのいくつかの例のおかげで、私はこの問題を解決できました。このgithubプロジェクトhereから。私は私のプロジェクトでそれを動作させるためにいくつか調整が必要でしたが、その結果、コマンドラインからsrc/test /ディレクトリにある私のユニットテストだけでコードカバレッジを実行し、生成されたレポートにアクセスできます。ここで
は、タスクが私のbuild.gradleで次のようになります。私が作るために必要な
task jacocoReport(type: JacocoReport, dependsOn: 'testMockDebugUnitTest') {
group = 'Reporting'
description = 'Generate Jacoco coverage reports after running tests.'
reports {
xml.enabled = true
html.enabled = true
}
classDirectories = fileTree(
dir: 'build/intermediates/classes/test/mock/debug',
excludes: [
'**/R*.class',
'**/BuildConfig*'
]
)
sourceDirectories = files('src/main/java')
executionData = files('build/jacoco/testMockDebugUnitTest.exec')
doFirst {
files('build/intermediates/classes/test/mock/debug').getFiles().each { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}
}
}
変更:一人で私のユニットテストを実行するにはGradleのタスクtestMockDebugUnitTest
、及び頼るために必要なjacocoReport
タスクによって行われます私のユニットテストが最初に完了しました。私のために生成されたビルドツリーは少し異なりますので、私はそれをハードコードしました。Jacocoが依存する実行データは、testMockDebugUnitTest
タスクによって生成された.execファイルにもあります。
結局のところ、私は単体テストのコードカバレッジを、私のインストルメンテーションテストとは別にコマンドラインで得ることができます。