Java アプリケーション プロジェクトのコード カバレッジをセットアップしようとしています。
プロジェクト名:NewApp
プロジェクトの構造:
- src/java/** (ソースコード)
- src/java-test (単体テスト - Jnuit)
- test/it-test (統合テスト)
- test/at-tests (受け入れテスト)
- tomcat/* (Tomcat の開始/停止スクリプトを含む)
- xx/.. etc 通常のアプリケーションに必要なフォルダー。
グラドルのバージョン: 1.6
環境:Linux
ビルド アーティファクト リポジトリ (ex の artifactory/maven) からアプリケーション (NewApp) の依存関係 (つまり、アプリがビルド プロセスに使用するサービス jar) をフェッチし、アプリをビルドする gradle ビルド スクリプトを実行しています。
この時点で、NewApp アプリケーション プロジェクトの JaCoCo プラグインを使用してコード カバレッジを取得したいと考えました。
Gradle/Jacoco ごとのドキュメントに従いましたが、Jacoco カバレッジ レポートが何をしたかを確認できる jacoco などのレポート/... フォルダーが作成されないようです。
私の質問: 1. ユニット テスト (Junit) を使用してコード カバレッジを取得するには、次のことだけを行う必要があり、ユニット テスト (テスト タスク、つまり「gradle テスト」) を実行する前に tomcat を開始/停止する必要はありません。 ) 単体テストを使用して / のコード カバレッジを取得します。アドバイス/修正してください。コード(Gradle jacoco単体テスト部分のみ)-私が使用しているのは次のとおりです。
apply plugin: 'jacoco'
test {
include 'src/java-test/**'
}
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
//classDirectories = fileTree(dir: 'build/classes/main', include: 'com/thc/**')
//sourceDirectories = fileTree(dir: 'scr/java', include: 'com/thc/**')
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
および統合テストの場合:
task integrationTest(type: Test) {
include 'test/java/**'
}
jacocoTestReport はテスト タスクに依存するため、それらが最初に呼び出され、最後に jacocoTestReport がコード カバレッジで見つかったものをレポートします。
- 統合テストのコード カバレッジを取得するには、最初に tomcat を起動し (つまり、統合テストのテスト ターゲットを実行/呼び出す前に)、「gradle integrationTest」または「gradle test」タスクを呼び出してから tomcat を停止し、コードを取得する必要があると想定しています。取材レポート。他のブログ投稿から、Tomcat が起動する前に jacoco エージェントを割り当てるには JAVA_OPTS 変数をセットアップする必要があることもわかりました。
例: JAVA_OPTS 変数を次のように設定します。
export JACOCO="-Xms256m -Xmx512m -XX:MaxPermSize=1024m -javaagent:/production/jenkinsAKS/jobs/NewApp/workspace/jacoco-0.6.3.201306030806/lib/jacocoagent.jar=destfile=/production/jenkinsAKS/jobs/NewApp/workspace/jacoco/jacoco.exec,append=true,includes=*"
export JAVA_OPTS="$JAVA_OPTS $JACOCO"
Gradle/groovy を初めて使用する場合 - Tomcat の開始/停止を伴う場合、上記の統合/単体テストを機能させるために、build.gradle (ビルド スクリプト) 内にどのコードを記述すればよいかわかりません。誰かがそれを行うためのサンプル スクリプトを提供できる場合は、試してみます。
Jenkins で Jacoco コード カバレッジを公開すると (Jacoco レポートを公開するために Jenkins ポスト ビルド アクションを使用して)、現在コード カバレッジが得られません。Jenkins ビルド ダッシュボードでは、コード カバレッジが 0% と表示されます (つまり、バーはすべて赤色で表示され、実際のコード カバレッジは緑色ではありません)。
これについていくつかの牽引力を得るためにあなたのアドバイスが必要です.