2017-05-11 6 views
0

Javaプロジェクトjacocoでgradle-pluginを使用してカバレッジを計算します。 問題は、XMLから生成されたクラスを追加のプロジェクトに入れて、それを依存関係として解決したことです。我々は、これらのモデルクラスのコードコーデックも分析することを望んでいます。私たちのマッパークラスでdatacontainersのすべてのセッターメソッドを使用したかどうかを確認する。モデルプロジェクトのコードカバレッジはオプションではありません。jacocoレポートのjarパッケージからの外部ソースを表示

現在、jacocoは主なプロジェクトにあるが外部ジャーのクラスではないクラスのみをレポート(html/xml/csv)に表示します。 jacocoセッションには、eclipseまたはintellijでロードするときのカバレッジデータが含まれています。

buildscript { 
... 
    dependencies { 
    ...  
     classpath 'externalpackage:externalpackage-model' 
    ... 
    } 
} 

compile('externalpackage:externalpackage-model:0.0.8') 
testCompile('externalpackage:externalpackage-model:[email protected]') 
testCompile('externalpackage:externalpackage-model:0.0.8:[email protected]') 

jacoco { 
    toolVersion = "0.7.6.201602180812" 
    reportsDir = file("$buildDir/customJacocoReportDir") 
} 
jacocoTestReport { 
    reports { 
     xml.enabled true 
     csv.enabled true 
     html.enabled true 
     html.destination "${buildDir}/jacocoHtml"   
} 

additionalSourceDirs files('externalpackage:externalpagage:0.0.8:[email protected]') 
//Doesn't work either 
//additionalSourceDirs files('C:/Users/sero/Downloads/test/externalpackage-0.0.8-sources') 
//additionalSourceDirs = files('C:/Users/sero/Downloads/test/externalpackage-0.0.8-sources/de/mycompany/.../MyModelClasses.java') 
} 

ジャーソースパッケージはこのようなものです: (ルート)/デ/ mycompanyの/.../ MyModelClasses.java

はたぶん誰かがアイデア自分でそれを見つけた

+0

あなたは、「XMLから生成された**私たちのクラス」を「jacoco-report」に入れています。通常は、生成されたクラスをすべての種類のコード解析から_exclude_する必要があります。生成された場合、カバレッジが低くても何も変更できないからです。そして、生成されたクラスは通常、データコンテナだけであり、ロジックを提供しません。getter/setterからのテスト(およびカバレッジの計算)はあまり役に立ちません。 – Andy

+0

データクラスをテストする必要はないというのは正しいことです。しかし、この問題の要件は少し異なります。すべてのテストでこれらのデータコンテナのsetterメソッドを使用していることを検証する必要があります。これで、マッパークラスにフィールドを設定することを忘れていないことを検証したいと考えています。 –

答えて

1

を持っています。問題は、クラスのパスも指定する必要があります。

jarをビルドフォルダに解凍し、さらにReportClassDirsとadditionalSourceDirsをレポートジョブに追加しました。

これはビルドファイルです。

configurations { 
    externalClasses 
    externalSources 
} 

dependencies { 
    externalClasses "externalpackage:externalpackage-model:[email protected]" 
    externalSources "externalpackage:externalpackage-model:0.0.8:[email protected]"   
    ... 
} 

buildscript { 
... 
    dependencies { 
    ...  
     classpath 'externalpackage:externalpackage-model' 
    ... 
    } 
} 

compile('externalpackage:externalpackage-model:0.0.8') 
testCompile('externalpackage:externalpackage-model:[email protected]') 
testCompile('externalpackage:externalpackage-model:0.0.8:[email protected]') 

jacoco { 
    toolVersion = "0.7.6.201602180812" 
    reportsDir = file("$buildDir/customJacocoReportDir") 
} 

task unzipExternalModel(type: Copy){ 
    from zipTree(configurations.externalSources.files.first()) 
    into "$buildDir/tmp/externalSources" 
    from zipTree(configurations.externalClasses.files.first()) 
    into "$buildDir/tmp/externalClasses" 
} 

jacocoTestReport { 
    dependsOn unzipExternalModel 
    reports { 
     xml.enabled true 
     csv.enabled true 
     html.enabled true 
     html.destination "${buildDir}/jacocoHtml"   
    } 
    additionalSourceDirs = files("$buildDir/tmp/externalSources") 
    additionalClassDirs = files("$buildDir/tmp/externalClasses") 
} 
+0

ソース出力を得るために、コピータスクを2つに分割しなければならなかったことに注意してください(2回の設定をサポートするようには作られていません) –

関連する問題