Jtest でプロジェクトを解析するには、Ant は特定の順序で次の処理を実行する必要があります。
Maven での解析とカバレッジ情報の収集を行う前に、Jtest ライセンスが適切に設定されていることを確認してください (「Setting the License」を参照)。 |
コードに対して静的解析を実行するには、次の操作を行います。
-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 ディレクトリにデプロイすることもできます(「初期セットアップ」を参照)。
Jtest レポートに単体テストの結果を含めるには、 jtest タスクおよび単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
- jtest タスク
- 単体テスト用の Unit Tests
ビルトイン テスト コンフィギュレーション
-listener
スイッチを使用してコマンド ラインに Parasoft リスナーを追加するか、ターゲットで jtest:listener
タスクを設定します。Ant でプロジェクトをビルドします。コマンドは次のようになります (カバレッジの収集を省略するには、jtest.coverage.skip
オプションを使用します)。
ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener buildTestAnalyze -Djtest.coverage.skip=true |
単体テスト実行時にカバレッジ情報を収集するには、 jtest およびagent タスクと単体テスト用のビルトイン テスト コンフィギュレーション Unit Tests
を使用してテストを実行します。
Unit Tests
ビルトイン テスト コンフィギュレーション-listener
スイッチを使用してコマンド ラインに Parasoft リスナーを追加するか、ターゲットで jtest:listener
タスクを設定します。Ant でプロジェクトをビルドします。コマンドは次のようになります。
ant -lib PATH/TO/jtest-ant-plugin.jar -listener com.parasoft.Listener buildTestAnalyze |
agent
タスクJtest でカバレッジ データを収集する場合、Java エージェントを使用するのが推奨される方法です。(.class ファイルを変更せずに) 実行時バイトコードのインストゥルメンテーションを行うことができる agent タスクを適切なターゲットに設定します。次のサンプルは、必要なタスクを 1 つのターゲットで設定したビルド スクリプトを示しています。
<project name="agent-sample" default="buildTestAnalyze" xmlns:jtest="antlib:com.parasoft.jtest.plugin.ant"> <!-- ソース ディレクトリにテストとアプリケーションの両方のソース コードが含まれています。通常は、これらのソースは同じディレクトリには置かれません --> <property name="sources" value="src"/> <!-- クラスのディレクトリ --> <property name="classes" value="bin"/> <target name="buildTestAnalyze"> <!-- ソースのコンパイル --> <javac srcdir="${sources}" destdir="${classes}"/> <!-- バイトコードのインストゥルメント --> <!-- テストの実行 --> <jtest:agent> <!-- 次の属性がセットされる: haltonerror="no" haltonfailure="no" fork="yes" agent タスクがスキップされた場合、ネストされたタスクは構成を変更せずに実行される。--> <junit> <!-- formatter 要素は次のように設定される: <formatter type="xml"/> 別の formatter タイプが設定されている場合、上書きされる。 formatter がクラス名によって構成されている場合、そのままにされる。 --> <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> <!-- 解析 --> <jtest:jtest/> </target> </project> |
instrument
および instrument-test
タスク (非推奨)instrument および instrument-test タスクを実行して単体テストのカバレッジを収集できます。これらのタスクは、テストを実行する前に .class ファイルをインストゥルメントします。次のサンプルは、必要なタスクを 1 つのターゲットで設定したビルド スクリプトを示しています。
<project name="offline-sample" default="buildInstrumentTestAnalyze" xmlns:jtest="antlib:com.parasoft.jtest.plugin.ant"> <!-- ソース ディレクトリにテストとアプリケーションの両方のソース コードが含まれています。通常は、これらのソースは同じディレクトリには置かれません。 --> <property name="sources" value="src"/> <!-- クラスのディレクトリ --> <property name="classes" value="bin"/> <target name="buildTestAnalyze"> <!-- ソースのコンパイル --> <javac srcdir="${sources}" destdir="${classes}"/> <!-- バイトコードのインストゥルメント --> <jtest:instrument> <fileset dir="${classes}"> <exclude name="**/*Test.class"/> </fileset> <!-- デフォルト値の場合、classpathRefId を指定する必要はありません。 <classpathRefId>jtest.classpath</classpathRefId> --> <!-- デフォルトでは、インストゥルメントされたバイトコードは、${classes} の内容を上書きします --> <destDir>${basedir}/parasoft/instrumented-classes</destDir> </jtest:instrument> <jtest:instrument-test> <fileset dir="${classes}"> <include name="**/*Test.class"/> </fileset> <!-- デフォルト値の場合、classpathRefId を指定する必要はありません。 <classpathRefId>jtest.classpath</classpathRefId> --> <!-- デフォルトでは、インストゥルメントされたバイトコードは、${classes} の内容を上書きします --> <testDestDir>${basedir}/parasoft/instrumented-classes</testDestDir> </jtest:instrument-test> <!-- fork オプションでテストを実行。これは、オフライン インストゥルメンテーションで必要。さもなければカバレッジは不完全または空になる可能性がある --> <junit haltonfailure="off" haltonerror="off" fork="yes"> <formatter type="xml" /> <classpath> <!-- destDir または testDestDir パラメーターが別のディレクトリを指している場合、 classpath から ${classes} を削除する必要があります <pathelement location="${classes}"/> --> <!-- classpath には、カバレッジの収集に必要なインストゥルメント済みバイトコードとライブラリがあります --> <path refid="jtest.classpath"/> </classpath> <batchtest> <fileset dir="${classes}" includes="**/*Test.class"/> </batchtest> </junit> <!-- analysis --> <jtest:jtest/> </target> </project> |
Jtest のカバレッジ エージェントを使用すると、実行中のアプリケーションでの手動テストまたは自動テスト実行時にカバレッジ データを収集できます。Jtest でのアプリケーション カバレッジの収集については「アプリケーション カバレッジ」を参照してください。
以下のいずれかの方法でカバレッジを無効にできます。
instrument
および instrument-test
タスクの両方に skip
パラメーターを指定します。 そうすると、Jtest の実行はスキップされず、カバレッジの収集だけがスキップされます。Djtest.skip=true
プロパティを指定して Ant を実行します。