はじめに
Jtest でプロジェクトを解析するには、Ant は特定の順序で次の処理を実行する必要があります。
- Parasoft ビルド リスナーを登録します。
- プロジェクトをコンパイルします。
- Jtest タスクを実行します。
静的解析の実行
コードに対して静的解析を実行するには、次の操作を行います。
- Jtest Plugin for Maven がセットアップ済みであることを確認します (「Jtest Plugin for Ant の設定」を参照)。
- 実行するターゲットに jtest タスクが設定されていることを確認します。
-listenerスイッチを使用してコマンド ラインに Parasoft リスナーを追加するか、ターゲットでjtest:listenerタスクを設定します。Ant でプロジェクトをビルドします。コマンドは次のようになります。
ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener myTarget
上記のサンプルでは、コマンド ラインに Jtest Plugin for Ant が追加されていますが、JAR ファイルを Ant の lib ディレクトリにデプロイすることもできます(「初期セットアップ」を参照)。
デフォルトでは、テスト ソースは解析から除外されます。テスト コードを解析対象にするには、
excludeTestSources オプションを無効にします。「Ant 用 Jtest ゴール リファレンス」を参照してください。
単体テスト テストの実行とカバレッジの収集
Jtest レポートに単体テストの結果を含めるには、jtest タスクと agent タスク、および単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests を使用してテストを実行します。
- Jtest Plugin for Maven がセットアップ済みであることを確認します (「Jtest Plugin for Ant の設定」を参照)。
- テストを実行するターゲットに以下が設定されていることを確認します:
- jtest タスク
Jtest agent タスクでラップされた junit タスク
- 単体テスト用のUnit Testsビルトイン テスト コンフィギュレーション -listenerスイッチを使用してコマンド ラインに Parasoft リスナーを追加するか、ターゲットでjtest:listenerタスクを設定します。Ant でプロジェクトをビルドします。コマンドは次のようになります (カバレッジの収集を省略するには、
jtest.coverage.skipオプションを使用します)。ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener buildTestAnalyze
デフォルトでは、Jtest は実行されたテストのカバレッジ データを収集します。カバレッジの収集を無効化するには、jtest.coverage.skip オプションを有効にします (詳細は「Ant 用 Jtest タスク リファレンス」を参照)。
agent タスク
Jtest でカバレッジ データを収集する場合、Java エージェントを使用するのが推奨される方法です。(.class ファイルを変更せずに) 実行時バイトコードのインストゥルメンテーションを行うことができる agent タスクを適切なターゲットに設定します。次のサンプルは、必要なタスクを 1 つのターゲットで設定したビルド スクリプトを示しています。
<project name="agent-sample" default="buildTestAnalyze" xmlns:jtest="antlib:com.parasoft.jtest.plugin.ant">
<!-- sources directory containing both tests and application source code. Usually these sources are not placed in one directory. -->
<property name="sources" value="src"/>
<!-- classes directory -->
<property name="classes" value="bin"/>
<target name="buildTestAnalyze">
<!-- compiling sources -->
<javac srcdir="${sources}" destdir="${classes}"/>
<!-- instrumenting bytecode -->
<!-- run tests -->
<jtest:agent>
<!-- Following attributes will be set: haltonerror="no" haltonfailure="no" fork="yes"
If agent task skipped nested task will be executed without any config changes. -->
<junit>
<!-- Formatter element will be set as following: <formatter type="xml"/>
If different formatter type has been set it will get overridden.
If formatter has been configured by classname it will be left as it is. -->
<classpath>
<pathelement location="${classes}"/>
</classpath>
<batchtest>
<fileset dir="${classes}" includes="**/*Test.class"/>
</batchtest>
</junit>
<coverage>
<includes>
<fileset dir="${classes}" />
</includes>
<testIncludes>
<include>**/*Test.class</include>
</testIncludes>
</coverage>
</jtest:agent>
<!-- analysis -->
<jtest:jtest/>
</target>
</project>
アプリケーション カバレッジの収集
Jtest のカバレッジ エージェントを使用すると、実行中のアプリケーションでの手動テストまたは自動テスト実行時にカバレッジ データを収集できます。Jtest でのアプリケーション カバレッジの収集については「アプリケーション カバレッジ」を参照してください。
カバレッジ収集の無効化
以下のいずれかの方法でカバレッジを無効にできます。
skipパラメータを指定してカバレッジの収集をスキップします (この方法では、Jtest の実行は無効化されません)。- 次の
-Dオプションを指定して Ant を実行します。-Djtest.skip=true - 次のプロジェクト プロパティを設定します。
<property name="jtest.skip" value="true"/>( Jtest タスクがサブプロジェクトで構成されている場合、このプロパティを継承していることを確認してください)。