第4章 XML ルールのテスト
XML ルールを作成したら、テストルールを作成して、そのルールが機能するようにする必要があります。
4.1. テストルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
テストルールは、以下の違いで、テストルールを作成するプロセスを使用して作成されます。
-
テストルールは、テストするルールの下にある
tests/ディレクトリーに置く必要があります。 -
テストクラスなどのデータは、
tests/ディレクトリーの下のdata/ディレクトリーに配置する必要があります。 -
テストルールでは、
.windup.test.xml拡張子を使用する必要があります。 - これらのルールは、Test XML Rule Structure で定義された構造を使用します。
さらに、テストするルールの名前に続くテストルールを作成することが推奨されます。たとえば、ファイル名 proprietary-rule.mta.xml でルールを作成した場合、テストルールは proprietary-rule.windup.test.xml と呼ばれます。
4.1.1. XML ルール構造のテスト リンクのコピーリンクがクリップボードにコピーされました!
すべてのテスト XML ルールは、1 つ以上のルールセット rulesets を含む ruletests 内の要素として定義されます。詳細は、MTA XML rule schema を参照してください。
ルールテストは、移行の特定の領域を対象とする 1 つ以上のテストのグループです。これは <ruletest> 要素の基本構造です。
<ruletest id="<RULE_TOPIC>-test">: 一意の MTA ルールテストとして定義し、固有のルールテスト ID を提供します。-
<testDataPath>: テストに使用するクラスやファイルなどのデータへのパスを定義します。 -
<sourceMode>: データで渡されたにソースファイルのみが含まれるかどうかを示します。EAR、WAR、JAR などのアーカイブが使用されている場合は、falseに設定する必要があります。デフォルトはtrueです。 -
<rulePath>: テストされるルールへのパス。これは、テストするルールの名前で終了します。 -
<ruleset>: テストケースのロジックが含まれるルールセット。これらは Ruleset で定義されるものと同じです。
-
4.1.2. XML ルール構文のテスト リンクのコピーリンクがクリップボードにコピーされました!
標準の XML ルール構文のタグに加え、以下の when 条件がテストルールの作成に一般的に使用されます。
-
<not> -
<iterable-filter> -
<classification-exists> -
<hint-exists>
標準 perform action 構文のタグのほかに、以下の perform 条件がテストルールのアクションとして一般的に使用されます。
-
<fail>
4.1.2.1. 構文 リンクのコピーリンクがクリップボードにコピーされました!
概要
<not> 要素は標準の論理演算子 not で 、通常は条件を満たさない場合に <fail> を実行するために使用されます。
以下は、分析の最後に特定のメッセージのみが存在する場合に失敗したテストルールの例です。
<not> 要素には固有の属性や子要素がありません。
4.1.2.2. 構文 リンクのコピーリンクがクリップボードにコピーされました!
概要
<iterable-filter> 要素は、条件の検証回数をカウントします。詳細は、IterableFilter クラスを参照してください。
以下は、指定のメッセージの 4 つのインスタンスを検索する例です。
<iterable-filter> 要素には一意の子要素がありません。
<iterable-filter> 要素属性
| 属性名 | タイプ | 説明 |
|---|---|---|
| size | integer | 検証される回数。 |
4.1.2.3. 構文 リンクのコピーリンクがクリップボードにコピーされました!
<classification-exists> 要素は、分析に特定の分類タイトルが含まれているかどうかを判断します。詳細は、ClassificationExists クラスを参照してください。
特殊文字 ([、' など) が含まれるメッセージをテストする場合は、各特殊文字をバックスラッシュ (\) でエスケープして正しく一致させる必要があります。
以下は、特定の分類タイトルを検索する例です。
<classification-exists> には一意の子要素がありません。
<classification-exists> 要素属性
| 属性名 | タイプ | 説明 |
|---|---|---|
| classification | String |
検索する |
| in | String | 定義されたファイル名が含まれるファイルに一致することを制限する任意の引数。 |
4.1.2.4. 構文 リンクのコピーリンクがクリップボードにコピーされました!
<hint-exists> 要素は、分析に特定のヒントが含まれているかどうかを判断します。これは定義されたメッセージのインスタンスをすべて検索し、通常は <message> 要素内の開始または特定のクラスを検索するために使用されます。詳細は、HintExists クラスを参照してください。
特殊文字 ([、' など) が含まれるメッセージをテストする場合は、各特殊文字をバックスラッシュ (\) でエスケープして正しく一致させる必要があります。
以下は、特定のヒントを検索する例です。
<hint-exists> 要素には固有の子要素がありません。
<hint-exists> 要素属性
| 属性名 | タイプ | 説明 |
|---|---|---|
| message | String |
検索する |
| in | String |
指定のファイル名を参照する |
4.1.2.5. 構文 リンクのコピーリンクがクリップボードにコピーされました!
<fail> 要素は実行を失敗として報告し、関連するメッセージを表示します。通常、これは、条件が満たされない場合のみメッセージを表示するために <not> 条件とともに使用されます。
<fail> 要素には、一意の子要素がありません。
<fail> 要素属性
| 属性名 | タイプ | 説明 |
|---|---|---|
| message | String | 表示されるメッセージ。 |