このセクションの内容
概要
Jtest は、ビルド システム プラグインが自動的に生成する jtest.data.json データ ファイルを処理します。また、JSON ファイルを手動で作成できます。詳細については 「カスタム.jsonデータ ファイルの作成」を参照してください。
JSON ファイルはプライマリ テスト スコープを決定します。-resource、-include、および -exclude オプションを使ってスコープを絞り込むことができます。
resource または include オプションでパターンが指定されている場合、このパターンに一致しないリソースは解析から自動的に除外されます。
resource オプションによるスコープの変更
次のいずれかでリソース パターンを指定することにより、スコープを変更できます。
-resourceコマンドライン オプション (複数の-resourceスイッチを使用して複数のリソースを指定できます)-resource [pattern]
.properties ファイルの
jtest.resource設定 (複数のリソースを指定するにはカンマで区切ります)。詳細については「設定の概要」を参照。jtest.resource=pattern1,pattern2
Maven または Ant の
<resource>パターン:<resources> <resource>pattern1</resource> <resource>pattern2</resource> </resources>
リソース パターンの構文
リソース パターンの一般的な構文は次のとおりです。
[project name]/[resource path relative to the project]
Ant 形式のワイルドカードやその他のパラメーターを使用してパターンを指定できます。
| パラメーター | 説明 |
|---|---|
? | パス区切り文字以外の任意の 1 文字に一致するワイルドカード |
* | パス区切り文字以外の任意の 0 文字以上に一致するワイルドカード |
** | 0 個以上のパス セグメントに一致するワイルドカード |
/ | すべてのオペレーティング システムの区切り文字 |
"[non-alphanumeric characters]" | リソース パスに空白またはその他の非英数文字が含まれる場合、引用符を使用します。 |
例
-resource 引数に 1 つしか値が含まれていない場合、値はプロジェクト名と比較され、ワイルドカード (*) が使用されます。次の表は、-resource スイッチの使用方法のサンプルです。
| 式 | 結果 |
|---|---|
-resource ProjectName/src | 指定されたディレクトリおよびサブディレクトリのすべてのファイルが解析されます (ワイルドカードを使用しない場合、ディレクトリの完全な名前を指定する必要があります)。 |
-resource ProjectName/**/*.java | 指定されたプロジェクトのすべての Java ファイルが解析されます。 |
-resource **/src/main/java/my/company/*.java | 現在のビルドに含まれるすべてのプロジェクトの指定したサブディレクトリにあるすべての Java ファイルが解析されます。 |
-resource ProjectName/src/main/java/my/company/File.java | 指定された単一のファイルが解析されます。 |
-resource c:/resource.lst |
|
プロジェクト名の解決
ProjectName の値は、次のルールに従って生成されます。
- Ant のプロジェクト名は project タグの name プロパティから 取得されます。
- Maven のプロジェクト名は groupId:artifactId から 取得されます。
- Gradle のプロジェクト名は gradle.settings ファイルから 取得されます。
- IDE で設定されたプロジェクト名はそのまま使用されます。
projectNameTemplate パラメーターを使って、Maven と Gradle のプロジェクト名をカスタマイズできます。詳細については「Maven 用 Jtest ゴール リファレンス」および「 Gradle 用 Jtest タスク リファレンス」を参照してください。
外部リソースの処理
指定したスコープが外部リソースを含む場合、生成されるパスに文字列 EXT が含まれます。たとえば、解析対象のプロジェクトが、別の場所にあるソース ファイルをリンクで含んでいるかもしれません。以下の例では、Simple.java ファイルは Demo プロジェクトにありますが、Money.java ファイルはリンクで追加されていてプロジェクトの外部にあります。
Demo/src/main/java/examples/eval/Simple.java Demo/EXT/examples/bank/Money.java
include および exclude オプションによるスコープの変更
次のいずれかを使ってパターンを指定することにより、スコープを変更できます。
-includeおよび-excludeコマンドライン オプション-include pattern -exclude pattern
.properties ファイルの
jtest.includeおよびjtest.excludeの設定。詳細については「設定の概要」を参照。jtest.include=pattern jtest.exclude=pattern
Maven または Ant の
<resource>パターン:<include>pattern</include> <exclude>pattern</exclude>
include と exclude の両方のパターンが指定されている場合、Jtest は、exclude パターンに一致するリソースを除いて、include パターンで指定されたリソースを解析します。
include または exclude パターンの構文
include または exclude パターンは、次のいずれかを指定することにより定義できます。
- リソースの完全修飾名
path: [ディスク上の絶対パス]
Ant 形式のワイルドカードやその他のパラメーターを使用してパターンを指定できます。
| パラメーター | 説明 |
|---|---|
? | パス区切り文字以外の任意の 1 文字に一致するワイルドカード |
* | パス区切り文字以外の任意の 0 文字以上に一致するワイルドカード |
** | 0 個以上のパス セグメントに一致するワイルドカード |
/ | セパレーター |
| path: | ハード ディスクの絶対パスに一致する接頭辞 |
多数のファイルを -include/-exclude で指定する場合、リスト ファイル (*.lst) を作成し、そのリスト ファイルのパスを指定することもできます。*.lstファイルの各アイテムが個別のエントリとして扱われます。
例
| 使用法 | 説明 |
|---|---|
-include com/** | "com" で始まるすべてのパッケージをテストします。 |
-include path:**/Bank.java | Bank.java ファイルだけをテストします。 |
-include path:C:/Project/src/** | C:/Project/src のすべてのサブファイルおよびサブディレクトリをテストします。 |
-include path:C:/Project/src/* | C:/Project/src のすべてのファイルをテストしますが、サブディレクトリはテストしません。 |
-include c:/include.lst |
|
-exclude **/internal/** | パッケージ名に "internal" を含むクラス以外のすべてのものをテストします。 |
jtest.includeTestSources オプションによるスコープの変更
jtest.includeTestSources コマンド ライン オプションを使用してテスト ソース コードを解析に含めることによってスコープを変更できます。
-Dproperty.jtest.includeTestSources=true
このオプションはデフォルトでオフです。(IDE では、テスト ソース コードはデフォルトで解析に含められます)
注意: このオプションは、Jtest Plugin for Ant では動作しません。
カスタム .json データ ファイルの作成
通常、Jtest はビルド システム プラグインが自動的に生成する jtest.data.json データ ファイルを処理します。別の方法として、手動で .json ファイルを作成し、-data コマンド ライン オプションで .json ファイルへのパスを指定できます (「静的解析の実行」を参照)。
Jtest が使用するデータ ファイルを手動で作成するには、-project オプションを指定して jtestcli を実行します。デフォルトでは、-project.location オプションで設定されたプロジェクトのルートに example.data.json ファイルが作成されますが、-project.jsonpath を使用して .json ファイルの場所と名前をカスタマイズできます。
このファイルを手動で更新する場合、必ず UTF-8 エンコーディングで保存します。
利用可能なオプションのリストについては「カスタム JSON の作成」を参照してください。
ソース管理データに基づくファイル フィルターの定義
追加のファイル フィルターをセットアップすることで、ローカルで変更されたファイルまたは現在の作業ブランチで変更されたファイルだけに解析範囲を制限できます。これにより、ソース管理システムにコードをチェックインしたり、メインの開発ストリームにコードをマージする前に、最近のコードの変更で入り込んだバグを検出し、修正する作業に集中できるようになります。
前提条件
- サポート対象のソース管理システムへの接続が適切に設定されていること (「ソース管理システムへの接続」および「ソース管理システムの設定」を参照)
scope.scontrol=trueが設定され、ソース管理システムに基づいた作成者の算出が有効化されていること (「スコープと作成者の設定」を参照)
ローカルで変更されたファイルの解析
解析のスコープをローカルで変更されたファイルだけに限定するには、.properties 設定ファイルに次のオプションを追加します。
scope.scontrol.files.filter.mode=local
現在の作業ブランチで変更されたファイルの解析
"master" や "trunk" などのメインの統合ストリームと異なっている現在の作業ブランチのファイルだけに解析のスコープを限定するには、.properties 設定ファイルに次のオプションを追加します。
scope.scontrol.files.filter.mode=branch
作業ブランチとメインの統合ストリームではなく別のブランチを比較したい場合、または特定のリビジョンと比較したい場合は、参照として使用するブランチまたはリビジョンの名前または ID を指定する必要があります。次の設定は、カスタムブランチ/リビジョンと異なっている現在の作業ブランチのファイルに解析スコープを限定します。
scope.scontrol.files.filter.mode=branch scope.scontrol.ref.branch=[name/ID of the custom reference branch/revision]
.properties ファイルで設定されたスコープ フィルター設定は、すべてのテスト コンフィギュレーションに影響を与えます。
「スコープと作成者の設定」を参照してください。
別の方法として、テスト コンフィギュレーションで追加のスコープ フィルターを定義することもできます。それには、カスタム テスト コンフィギュレーションを作成し、適用するフィルターを指定します。「カスタム テスト コンフィギュレーションの作成」を参照してください。GUI で設定されたスコープ フィルターは、特定のテスト コンフィギュレーションにだけ適用され、.properties ファイルで設定されたスコープ フィルターによって上書きされます。