0

我有以下 xml 数据:

控制:

 <Data>

        <propertyValues>
            <propertyName>Name1</propertyName>
            <value>
                <text>
                    <value>Value1</value>
                </text>
            </value>
        </propertyValues>
        <propertyValues>
            <propertyName>Name2</propertyName>
            <value>
                <text>
                    <value>Value2</value>
                </text>
            </value>
        </propertyValues>
 </Data>

测试:

 <Data>
            <propertyValues>
                <propertyName>Name2</propertyName>
                <value>
                    <text>
                        <value>Value2</value>
                    </text>
                </value>
            </propertyValues>
            <propertyValues>
                <propertyName>Name1</propertyName>
                <value>
                    <text>
                        <value>Value1</value>
                    </text>
                </value>
            </propertyValues>
 </Data>

我希望这两个文件是“相同的”。

如何配置 xmlUnit 以使其工作?(我正在使用 xmlunit 2.6.3)

谢谢

莱昂

4

1 回答 1

1

这与 XMLUnit 用户指南的“选择节点”部分的运行示例非常相似。

在查看元素列表时,您需要使用一个ElementSelector选择正确propertyValues元素的元素,然后决定比较在唯一名为 的子元素中包含相同嵌套文本的元素propertyName。这直接转化为

ElementSelectors.conditionalBuilder()
    .whenElementIsNamed("propertyValues")
    .thenUse(ElementSelectors.byXPath("./propertyName", ElementSelectors.byNameAndText))
   ...

然后您需要添加任何其他规则以使其余部分正常工作。看看你的例子中可见的其余部分,没有模棱两可的孩子和一个简单的

   ...
    .elseUse(ElementSelectors.byName)
    .build();

会做。

于 2019-09-04T17:58:15.860 回答