アグリゲータである Jtest Plugin は、ビルド中に 1 回だけ実行される必要があります。 コマンドラインから直接 jtest ゴールを実行するか、レポート プラグインとして実行することを推奨します。
解析の前にプロジェクトのビルドを実行することは必須ではありません。しかし、複数モジュールからなるプロジェクトの場合は、事前にコンパイルすることを推奨します。そうすると、Jtest はローカル リポジトリの成果物を使用できるため、コードのテストおよび解析にかかる時間を短くできます。
Maven での解析とカバレッジ情報の収集を行う前に、Jtest ライセンスが適切に設定されていることを確認してください (「ライセンスの設定」を参照)。 |
コードに対して静的解析を実行するには、次の操作を行います。
jtest:jtest ゴールを実行します。コマンドは次のようになります。
mvn jtest:jtest |
Jtest Plugin for Maven は、.json ファイルから必要なビルド データを収集し、指定した設定に従ってコードを解析します (「Configuring Jtest Execution」を参照)。
Jtest が Maven テスト スコープの依存関係のインポートに関するコンパイルの問題をレポートした場合、mvn test
コマンドで jtest:jtest
ゴール を実行してください。
mvn test jtest:jtest |
Jtest レポートに単体テストの結果を含めるには、 jtest:jtest ゴールおよび単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
Jtest Maven Plugin が構成されていることを確認します。
Maven で jtest:jtest ゴールを実行します。コマンドは次のようになります。
mvn clean test jtest:jtest -Djtest.config="builtin://Unit Tests" |
単体テスト実行時にカバレッジ情報を収集するには、 jtest:jtest および jtest:agent ゴールと単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
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 ゴールは、(argLine および tycho.testArgLine によるデフォルト値から) VmArgs
パラメーター プロパティをセットアップすることで Maven テスト プラグイン (maven-surefire-plugin および tycho-surefire-plugin) を自動的に設定します。これらのパラメーターのデフォルト値を変更する必要がある場合は、以下のいずれかの方法で変更します。
デフォルト プロパティを使用します。jtest:agent ゴールは Jtest のjavaagent VmArg を使用してプロパティを拡張します。
<project> <!-- ... --> <properties> <!-- Jtest:agent ゴールによって拡張される argLine プロパティ ---> <argLine>-Xmx=1024m -XX:MaxPermSize=256m</argLine> </properties> <!-- ... --> <build> <plugins><!-- または pluginManagement --> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkCount>1</forkCount> <!-- ここでは argLine パラメーターを設定しない --> </configuration> </plugin> </plugin> </build> </project> |
インジェクトされたカスタム プロパティによるパラメーター値を使用します。
<project> <!-- ... --> <build> <plugins> <plugin> <groupId>com.parasoft.jtest</groupId> <artifactId>jtest-maven-plugin</artifactId> <configuration> <!-- jtest:agent ゴールは、以下のプロパティに Jtest Java agent VmArg を設定する --> <agentPropertyNames>jtest.argLine</agentPropertyNames> <!-- オフライン カバレッジと同じパラメーターを設定するオプションのカバレッジ ブロック --> <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:instrument
ゴール (非推奨)jtest:instrument ゴールを実行して単体テストのカバレッジを収集できます。 jtest:instrument ゴールは、テスト実行の前に (process-test-classes フェーズで) ファイルをインストゥルメントします。コマンドは次のようになります。
mvn clean test-compile jtest:instrument test jtest:jtest -Djtest.config="builtin://Unit Tests" |
カバレッジをレポートするには、おおもとのレポート スコープが、インストゥルメント スコープよりも範囲が広くなければなりません。レポート スコープは resource パラメーターでカスタマイズできます。デフォルトではすべてがスコープに含まれます。
<project> <!-- ... --> <build> <!-- ... --> <plugins> <!-- ... --> <plugin> <groupId>com.parasoft.jtest</groupId> <artifactId>jtest-maven-plugin</artifactId> <configuration> <includes><!-- レポート スコープの構成 --> <!-- report coverage for all files in specified package --> <include>**/my/package/*</include> <includes> <coverage> <excludes> <!-- クラスのインストゥルメントの除外 --> <exclude>**/AnnotationProcessor.class</exclude> </excludes> <testExcludes> <!-- テスト クラスのインストゥルメントの除外 --> <exclude>**/*Util.class</exclude> </testExcludes> </coverage> </configuration> </plugin> </plugins> </build> </project> |
jtest:instrument ゴールを使用したオフライン インストゥルメントは、バイトコードやビルド成果物の破損につながるおそれがあるため、jtest:agent ゴールを使用してカバレッジを収集することを推奨します。
<build> <!-- ... --> <plugins> <!-- コードをインストゥルメントする他のプラグイン --> <plugin> <groupId>com.parasoft.jtest</groupId> <artifactId>jtest-maven-plugin</artifactId> <executions> <execution> <goals> <goal>instrument</goal> </goals> <phase>process-classes</phase> </execution> </executions> </plugin> </plugins> </build> |
Jtest のカバレッジ エージェントを使用すると、実行中のアプリケーションでの手動テストまたは自動テスト実行時にカバレッジ データを収集できます。Jtest でのアプリケーション カバレッジの収集については「Application Coverage」を参照してください。