第 3 章 测试 XML 规则
创建 XML 规则后,您应该创建一个测试规则以确保它可以正常工作。
3.1. 创建测试规则 复制链接链接已复制到粘贴板!
使用与创建测试规则的过程类似的进程创建一个 XML 测试,但有以下区别:
-
测试规则应当放在要测试的规则下的
test/目录中。 -
测试类等任何数据都应放在
tests/目录下的data/目录中。 -
测试规则应使用
.windup.test.xml扩展。 - 这些规则使用 Test XML 规则结构中定义的结构。
另外,建议您创建一个遵循它测试的规则名称的测试规则。例如,如果创建了一个规则,其文件名为 proprietary-rule.mta.xml,则测试规则应称为 proprietary-rule.windup.test.xml。
3.1.1. 测试 XML 规则结构 复制链接链接已复制到粘贴板!
所有测试 XML 规则都定义为包含一个或多个 rulesets 的 rulesets 规则集中的一个元素。如需了解更多详细信息,请参阅 MTA XML 规则模式。
规则测试是针对特定迁移区域的一个或多个测试组。这是 <ruletest> 元素的基本结构。
<ruletest id="<RULE_TOPIC>-test">: 定义它作为唯一 MTA ruletest,并将其指定为唯一的 ruletest id。-
<testDataPath>:定义用于测试的所有数据的路径,如类或文件。 -
<sourceMode>: 指定传递的数据是否只包括源文件。如果存档(如 EAR、WAR 或 JAR)正在使用,则这应设置为false。默认值为true。 -
<rulePath>: 要测试的规则的路径。这应该以要测试的规则的名称结尾。 -
<ruleset>: Rulesets 包括测试的逻辑。它们与 Rulesets 中定义的相同。
-
3.1.2. XML 规则语法 复制链接链接已复制到粘贴板!
除了标准 XML 规则语法中的标签外,when 条件通常用于创建测试规则时:
-
<not> -
<iterable-filter> -
<classification-exists> -
<hint-exists>
除了标准 perform action 语法中的标签外,以下 when 条件通常用于测试规则中的操作:
-
<fail>
3.1.2.1. 语法 复制链接链接已复制到粘贴板!
概述
<not> 元素是标准逻辑 not 操作符,如果不满足条件,通常用于执行 <fail>。
以下是测试规则的一个示例,如果分析末尾只有特定消息,则会失败。
<not> 元素没有唯一属性或子元素。
3.1.2.2. 语法 复制链接链接已复制到粘贴板!
概述
<iterable-filter> 元素统计验证条件的次数。详情请参阅 IterableFilter 类。
下例中查找指定消息的四个实例:
<iterable-filter> 元素没有唯一的子元素。
<iterable-filter> 元素属性
| 属性名称 | 类型 | 描述 |
|---|---|---|
| size | 整数 | 验证的次数。 |
3.1.2.3. 语法 复制链接链接已复制到粘贴板!
<classification-exists> 元素决定分析中是否包含特定的分类标题。如需更多信息,请参阅 ClassificationExists 类。
当测试包含特殊字符(如 [ 或 ' )的消息时,您必须用反斜杠(\)进行转义来正确匹配。
以下是搜索特定分类标题的示例。
<classification-exists> 没有唯一的子元素。
<has-classification> 元素属性
| 属性名称 | 类型 | 描述 |
|---|---|---|
| classification | 字符串 |
要搜索的 |
| in | 字符串 | 可选参数,限制对包含所定义文件名的文件的匹配。 |
3.1.2.4. 语法 复制链接链接已复制到粘贴板!
<hint-exists> 元素决定分析中是否包含特定的提示。它搜索已定义消息的任何实例,通常用于搜索 <message> 元素的开头或特定类。详情请参阅 HintExists 类。
当测试包含特殊字符(如 [ 或 ' )的消息时,您必须用反斜杠(\)进行转义来正确匹配。
以下是搜索特定提示的示例。
<hint-exists> 元素没有唯一的子元素。
<hint-exists> 元素属性
| 属性名称 | 类型 | 描述 |
|---|---|---|
| message | 字符串 |
要搜索的 |
| in | 字符串 |
可选参数限制与引用所给文件名的 |
3.1.2.5. 语法 复制链接链接已复制到粘贴板!
<fail> 元素将执行报告为失败,并显示相关的消息。通常与 <not> 条件一起使用,仅在不满足条件时才显示消息。
<fail> 元素没有唯一的子元素。
<fail> 元素属性
| 属性名称 | 类型 | 描述 |
|---|---|---|
| message | 字符串 | 要显示的消息。 |