アグリゲータである Jtest Plugin は、ビルド中に 1 回だけ実行される必要があります。コマンドラインから直接 jtest
ゴールを実行するか、レポート プラグインとして実行することを推奨します。
解析の前にプロジェクトのビルドを実行することは必須ではありません。しかし、複数モジュールからなるプロジェクトの場合は、事前にコンパイルすることを推奨します。そうすると、Jtest はローカル リポジトリの成果物を使用できるため、コードのテストおよび解析にかかる時間を短くできます。
静的解析の実行
コードに対して静的解析を実行するには、次の操作を行います。
- Jtest Plugin for Maven がセットアップ済みであることを確認します (「Jtest Plugin for Maven の設定」を参照)。
jtest:jtest ゴールを実行します。 コマンドは次のようになります。
mvn jtest:jtest
Jtest Plugin for Maven は、.json ファイルから必要なビルド データを収集し、指定した設定に従ってコードを解析します (「Jtest 実行の設定」を参照)。
- 解析結果を参照します (「結果の参照」を参照)。
Jtest が Maven テスト スコープの依存関係のインポートに関するコンパイルの問題をレポートした場合、mvn test
コマンドで jtest:jtest
ゴール を実行してください。
mvn test jtest:jtest
デフォルトでは、テスト ソースは解析から除外されます。テスト コードを解析対象にするには、excludeTestSources
オプションを無効にします。「Maven 用 Jtest ゴール リファレンス」を参照してください。
単体テストの実行
Jtest レポートに単体テストの結果を含めるには、jtest:jtest ゴールおよび単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
- Jtest Plugin for Maven がセットアップ済みであることを確認します (「Jtest Plugin for Maven の設定」を参照)。
Maven で jtest:jtest ゴールを実行します。コマンドは次のようになります。
mvn clean test jtest:jtest -Djtest.config="builtin://Unit Tests"
単体テストのカバレッジの収集
単体テスト実行時にカバレッジ情報を収集するには、jtest:jtest および jtest:agent ゴールと単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
- Jtest Plugin for Maven がセットアップ済みであることを確認します (「Jtest Plugin for Maven の設定」を参照)。
Maven で jtest:agent および jtest:jtestゴールを実行します。
jtest:agent
ゴールの実行前にテストおよびクラスがコンパイルされている必要があります。? コマンドは次のようになります。mvn clean test-compile jtest:agent test jtest:jtest -Djtest.config="builtin://Unit Tests"
クラスがコンパイルされる前に jtest:agent
ゴールを実行すると、カバレッジが空になる場合があります。Tycho plugins や他のデフォルトのライフサイクルには含まれないプラグインを使用する場合、専用の (デフォルトではない) コンパイラを呼び出し、クラスが適切にコンパイルされ、カバレッジ情報が収集されるようにします。コマンドは次のようになります。
mvn clean tycho-compiler:compile jtest:agent verify jtest:jtest -Djtest.config="builtin://Unit Tests"
jtest:agent
ゴール
jtest:agent ゴールは、ビルド モジュールに基づいて Jtest エージェント設定を生成し、 initialize フェーズで agentPropertyNames パラメーターによって指定されたプロパティ ファイルの javaagent VM 引数を設定します。
デフォルトでは、特定のプロパティによって maven-surefire-plugin
および eclipse-test-plugin
に javaagent VmArg
をインジェクトします。
Maven テスト プラグインで jtest:agent
ゴールを使用するための前提条件は以下のとおりです。
- テストはフォークされたプロセスで実行する必要があります (
forkCount
、forkMode
などのパラメーターで) - 追加の VmArgs には、Jtest Java agent VmArgs (
argLine
パラメーター) が含まれていなければなりません。
jtest:agent
ゴールは、(argLine および tycho.testArgLine によるデフォルト値から) VmArgs
パラメーター プロパティをセットアップすることで Maven テスト プラグイン (maven-surefire-plugin および tycho-surefire-plugin) を自動的に設定します。これらのパラメーターのデフォルト値を変更する必要がある場合は、以下のいずれかの方法で変更します。
デフォルト プロパティを使用します。
jtest:agent
ゴールは Jtest のjavaagent VmArg
を使用してプロパティを拡張します。<project> <!-- ... --> <properties> <!-- argLine property which will be extended by jtest:agent goal ---> <argLine>-Xmx=1024m -XX:MaxPermSize=256m</argLine> </properties> <!-- ... --> <build> <plugins><!-- or pluginManagement --> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkCount>1</forkCount> <!-- do not configure argLine parameter here --> </configuration> </plugin> </plugin> </build> </project>
インジェクトされたカスタム プロパティによるパラメーター値を使用します。
<project> <!-- ... --> <build> <plugins> <plugin> <groupId>com.parasoft.jtest</groupId> <artifactId>jtest-maven-plugin</artifactId> <version>1.2.15</version> <configuration> <!-- jtest:agent goal will set Jtest Java agent VmArg into properties below --> <agentPropertyNames>jtest.argLine</agentPropertyNames> <!-- optional coverage block with parameters identical as in offline coverage --> <coverage> <!-- ... --> </coverage> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>${jtest.argLine} -Xmx=1024m -XX:MaxPermSize=256m</argLine> </configuration> </plugin> </plugin> </build> </project>
アプリケーション カバレッジの収集
Jtest のカバレッジ エージェントを使用すると、実行中のアプリケーションでの手動テストまたは自動テスト実行時にカバレッジ データを収集できます。Jtest でのアプリケーション カバレッジの収集については「アプリケーション カバレッジ」を参照してください。
テスト影響分析
Jtest Plugin for Maven の機能を拡張してテスト影響分析を使用することができます。テスト影響分析を行うと、変更の影響を受けるテストだけを識別して再実行できるため、影響を受けない多数のテストを実行するのに必要な時間や手間を省くことができます。プロジェクトのテスト影響分析を行うには、以下が必要です。
- Jtest に付属のテスト影響分析プラグイン (
cbt-maven-plugin
) を Maven ビルドに追加します。 - プラグインを設定します。
affected-tests
ゴールを実行します。
前提条件
- Jtest 10.4.1 以上
- Apache Maven 2.2.1 以上 (バージョン 3.3.1 および 3.3.3 はサポートされていません)
- Surefire 2.19.1 以上
さらに、Jtest Plugin for Maven が Jtest に付属の Maven リポジトリにアクセスできるよう設定されている必要があります (「初期セットアップ」を参照)。
ライセンス
テスト影響分析を使用するには、Parasoft ライセンス設定をカスタマイズする必要があります。 jtest.properties ファイルで custom_edition が指定され、'Change Based Testing' および 'Automation' 機能が有効化されていることを確認します。
?テスト影響分析を実行するには、さらにメモリが必要になります。Maven ビルドに割り当てるメモリを増やすことを推奨します。
Jtest は Maven のパラレル ビルドのテスト影響分析をサポートしていません。
Jtest は runModifiedTests
オプションが true
に設定されている場合、テストの除外をサポートしていません (「Optional Parameters」を参照)。
Test Impact Analysis Plugin との統合
POM ファイルのプラグインのリストに cbt-maven-plugin
を追加することで、テスト影響分析プラグインと統合できます。
<build> <plugins> <plugin> <groupId>com.parasoft.xtest.cbt</groupId> <artifactId>cbt-maven-plugin</artifactId> <version>1.0.0</version> </plugin> </plugins> </build>
プラグインの設定
cbt-maven-plugin
を設定することで、POM ファイルまたはコマンド ラインからプロジェクトのテスト影響分析をカスタマイズできます。最低でも、実行時に Jtest が生成する以下のファイルへのパスを指定する必要があります。
coverage.xml??
report.xml
利用可能なオプションの一覧については「Maven 用 Jtest ゴール リファレンス」を参照してください。
POM ファイルでの設定
POM ファイルでプラグインを設定するには、以下に cbt-maven-plugin
プロパティを追加します。
プラグインの宣言
pom.xml<plugin> <groupId>com.parasoft.xtest.cbt</groupId> <artifactId>cbt-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <coverageFile>target/jtest/coverage.xml</coverageFile> <testFile>target/jtest/report.xml</testFile> <runFailingTests>false</runFailingTests> <runModifiedTests>true</runModifiedTests> <jtestHome>${jtest.home}</jtestHome> <settingsFiles>jtestcli.properties</settingsFiles> </configuration> </plugin>
プラグインの実行
pom.xml<plugin> <groupId>com.parasoft.xtest.cbt</groupId> <artifactId>cbt-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <goals> <goal>affected-tests</goal> </goals> <configuration> <coverageFile>target/jtest/coverage.xml</coverageFile> <testFile>target/jtest/report.xml</testFile> <runFailingTests>false</runFailingTests> <runModifiedTests>true</runModifiedTests> <jtestHome>${jtest.home}</jtestHome> <settingsFiles>jtestcli.properties</settingsFiles> </configuration> </execution> </executions> </plugin>
Maven プロパティ
pom.xml<properties> <parasoft.coverage.file>target/jtest/coverage.xml</parasoft.coverage.file> <parasoft.test.file>target/jtest/report.xml</parasoft.test.file> <parasoft.runFailingTests>false</parasoft.runFailingTests> <parasoft.runModifiedTests>true</parasoft.runModifiedTests> <jtest.home>${env.JTEST_HOME}</jtest.home> <jtest.settings>jtestcli.properties</jtest.settings> </properties>
コマンド ラインでの設定
コマンド ラインでテスト影響分析をカスタマイズするには、-D
スイッチを使用して cbt-maven-plugin
プロパティを渡します。プロパティには "parasoft" または "jtest" 接頭辞を付ける必要があります (詳細は「Maven 用 Jtest ゴール リファレンス」を参照)。コマンドは次のようになります。
mvn cbt:affected-tests test -Dparasoft.coverage.file=target/jtest/coverage.xml -Dparasoft.test.file=target/jtest/report.xml -Dparasoft.runFailingTests=false -Dparasoft.runModifiedTests=true -Djtest.home=$JTEST_HOME -Djtest.settings=jtestcli.properties
affected-tests
ゴールの設定と実行
コマンド ラインから、または POM ファイルのゴールを設定することで、affected-tests
ゴールの実行を設定できます。
コマンド ラインでの設定
Maven ビルド ファイルに cbt-maven-plugin
が含まれている場合 (「 Test Impact Analysis Plugin との統合」を参照)、コマンド ラインから cbt:affected-tests
ゴールを実行できます。必ず test
ゴールの前に実行します。
mvn cbt:affected-tests test
POM ファイルでの設定
ビルド プラグインまたはプロファイルのビルド プラグインで affected-tests
ゴールの実行を設定できます。
ビルド プラグインに
affected-tests
ゴールを含める場合pom.xml<build> <plugins> <plugin> <groupId>com.parasoft.xtest.cbt</groupId> <artifactId>cbt-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <goals> <goal>affected-tests</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
ゴールは Maven
test
ゴールとともに自動的に実行されます。コマンド ラインmvn test
プロファイルのビルド プラグインに
affected-tests
ゴールを含める場合pom.xml<profile> <id>cbt</id> <build> <plugins> <plugin> <groupId>com.parasoft.xtest.cbt</groupId> <artifactId>cbt-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <goals> <goal>affected-tests</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile>
プロファイルを使用して Maven
test
ゴールを実行する必要があります。コマンド ラインmvn test -P cbt