jtest
タスクは、ルート プロジェクトに対してだけ適用および実行されるべきです。解析の前にプロジェクトのビルドを実行することは必須ではありません。しかし、複数モジュールのビルドでは、コマンド ラインに build
または assemble
タスクを追加することによって、事前にコンパイルを行うことを推奨します。そうすると、Jtest はローカル リポジトリの成果物を使用できるため、コードのテストおよび解析にかかる時間を短くできます。
静的解析の実行
コードに対して静的解析を実行するには、次の操作を行います。
- Jtest Plugin for Gradle がセットアップ済みであることを確認します (「Jtest Plugin for Gradle の設定」を参照)。
jtest タスクを実行します。コマンドは次のようになります。
gradle jtest -I PATH/TO/JTEST/integration/gradle/init.gradle
Jtest Plugin for Gradle は、.json ファイルから必要なビルド データを収集し、指定したテスト コンフィギュレーションに従ってコードを解析します。
- 解析結果を参照します (「結果の参照」を参照)。
デフォルトでは、テスト ソースは解析から除外されます。テスト コードを解析対象にするには、excludeTestSources
オプションを無効にします。「Gradle 用 Jtest ゴール リファレンス」を参照してください。
単体テストの実行
taskに単体テストの結果を含めるには、jtest タスクおよび単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
- Jtest Plugin for Gradle がセットアップ済みであることを確認します (「Jtest Plugin for Gradle の設定」を参照)。
次の順序で Gradle タスクを実行します:
-test
(またはbuild
) タスクで単体テストを実行します。
- jtest タスク
コマンドは次のようになります。gradle clean test jtest -Djtest.config="builtin://Unit Tests"
- 単体テストを実行するには、test (または build) タスクをコマンド 李案に追加します。
- jtest タスクを実行します。
- Gradle で jtest-agent および jtest タスクを実行します。コマンドは次のようになります。
単体テストのカバレッジの収集
単体テスト実行時にカバレッジ情報を収集するには、jtest および jtest-agent タスクと単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
- Jtest Plugin for Gradle がセットアップ済みであることを確認します (「Jtest Plugin for Gradle の設定」を参照)。
次の順序で Gradle タスクを実行します:
- jtest-agent タスク
-test
(またはbuild
) タスクで単体テストを実行します。
- jtest タスク
コマンドは次のようになります。gradle clean jtest-agent test jtest -Djtest.config="builtin://Unit Tests"
jtest-agent タスクを使用してカバレッジを収集することを推奨します。jtest-instument タスクを使用したオフラインのインストゥルメントは非推奨になりました。
ビルド スクリプトで JVM 引数を指定している場合、他の JVM 引数を上書きしていないことを確認してください。
アプリケーション カバレッジの収集
Jtest のカバレッジ エージェントを使用すると、実行中のアプリケーションでの手動テストまたは自動テスト実行時にカバレッジ データを収集できます。Jtest でのアプリケーション カバレッジの収集については「アプリケーション カバレッジ」を参照してください。
テスト影響分析
Jtest Plugin for Gradle の機能を拡張してテスト影響分析を使用することができます。テスト影響分析を行うと、変更の影響を受けるテストだけを識別して再実行できるため、影響を受けない多数のテストを実行するのに必要な時間や手間を省くことができます。プロジェクトのテスト影響分析を行うには、以下が必要です。
- テスト影響分析プラグインを設定します。
affectedTests
タスクを実行します。
Gradle ビルド スクリプトを変更する必要はありません。
前提条件
- Jtest 10.4.1 以上
- Gradle 3.3 以上
ライセンス
テスト影響分析を使用するには、Parasoft ライセンス設定をカスタマイズする必要があります。jtest.properties ファイルで custom_edition が指定され、'Change Based Testing' および 'Automation' 機能が有効化されていることを確認します。
テスト影響分析を実行するには、さらにメモリが必要になります。Gradle ビルドに割り当てるメモリを増やすことを推奨します。
Jtest は Gradle のビルド スクリプトにすべてのテストをインクルードする include パターンが含まれている場合、テスト影響分析を実行しない場合があります。
同じローカル環境で複数回テスト影響分析を実行する場合、コマンド ラインに --no-daemon
オプションを追加します。
Test Impact Analysis Plugin との統合
Jtest に付属の init.gradle
スクリプトを使用すると、Gradle のビルド スクリプトを変更せずにテスト影響分析プラグインと Gradle を統合できます。プラグインと Gradle を統合するには、-I
オプションを使用してコマンド ラインに init.gradle
スクリプトの場所を渡します。
gradle affectedTests test -I PATH/TO/JTEST/integration/gradle/init.gradle
プラグインの設定
テスト影響分析プラグインのプロパティを設定することで、POM ファイルまたはコマンド ラインからプロジェクトのテスト影響分析をカスタマイズできます。最低でも、実行時に Jtest が生成する以下のファイルへのパスを指定する必要があります。
coverage.xml
report.xml
利用可能なオプションの一覧については「Gradle 用 Jtest タスク リファレンス」を参照してください。
ビルド スクリプトでの設定
ビルド スクリプトで設定を宣言する際にプロパティを指定します。
affectedTests { coverageFile = 'path/to/coverage.xml' testFile = 'path/to/report.xml' runFailingTests = false runModifiedTests = true jtestHome = 'path/to/jtest' settingsFiles = ['path/to/settings1.properties', 'path/to/settings2.properties'] }
コマンド ラインでの設定
コマンド ラインでテスト影響分析をカスタマイズするには、-D
スイッチを使用してプラグイン プロパティを渡します。プロパティには "parasoft" または "jtest" 接頭辞を付ける必要があります (「Gradle 用 Jtest タスク リファレンス」を参照)。コマンドは次のようになります。
gradle affectedTests test -I PATH/TO/JTEST/integration/gradle/init.gradle -Dparasoft.coverage.file="path/to/coverage.xml" -Dparasoft.test.file="path/to/report.xml" -Dparasoft.runFailingTests=false -Dparasoft.runModifiedTests=true -Djtest.home="path/to/jtest" -Djtest.settings="jtestcli.properties,newsettings.properties"
affectedTest
タスクの設定と実行
これ以上の追加の設定なしでコマンド ラインから affectedTests
タスクを実行できます。必ず test
タスクの前に実行します。コマンドは次のようになります。
gradle clean affectedTests test -I PATH/TO/JTEST/integration/gradle/init.gradle
または、以下のように実行することもできます。
build.gradle
スクリプトでタスクの実行を設定します。build.gradletest.dependsOn affectedTests
Gradle の
test
タスクを実行します – 自動的にaffectedTests
タスクが実行されます。コマンド ラインgradle test -I PATH/TO/JTEST/integration/gradle/init.gradle