基于值的 XmlUnit 顺序
XmlUnit order based on value
我在 JUnit 测试中将保存的示例 xml 与实时编组的 xml 进行比较。验证 xml.
中是否存在键值对
我正在使用 XmlUnit 2.1.0 具体
我的xml如下:
<entries>
<entry>
<key>delete</key>
<value>ENABLED</value>
</entry>
<entry>
<key>view</key>
<value>DISABLED</value>
</entry>
<entry>
<key>create</key>
<value>DISABLED</value>
</entry>
</entries>
条目的顺序可能会有所不同。我不确定如何让它正确验证,因为它将不同的键值视为 xml 中的差异,即使它只是订单更改。
我断言与 JUnit 中的以下断言相似:
assertThat(marshalledXml, isSimilarTo(Input.fromFile("path/to/example.xml").ignoreWhitespace().ignoreComments());
我怀疑我可能需要使用 XPath 匹配器或带有 ElementSelector 的 DefaultNodeMatchers。
是的,您需要提供一个 ElementSelector
"knows" 在您的特定情况下选择哪些节点进行比较。
对于大多数文档,元素的名称似乎是您应该使用的名称。至少 entries
、key
和 value
是这样。对于 entry
元素,您想比较那些元素,这些元素在 key
元素中具有匹配的嵌套文本,是它们的直接子元素,对吗?
我认为这可以转化为
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("entry")
.thenUse(ElementSelectors.byXPath("./key", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
有关 ElementSelector
选项的更详细讨论,请参阅 https://github.com/xmlunit/user-guide/wiki/SelectingNodes。您的 XML 与介绍中使用并在下一节中讨论的 table
示例非常接近。
我在 JUnit 测试中将保存的示例 xml 与实时编组的 xml 进行比较。验证 xml.
中是否存在键值对我正在使用 XmlUnit 2.1.0 具体
我的xml如下:
<entries>
<entry>
<key>delete</key>
<value>ENABLED</value>
</entry>
<entry>
<key>view</key>
<value>DISABLED</value>
</entry>
<entry>
<key>create</key>
<value>DISABLED</value>
</entry>
</entries>
条目的顺序可能会有所不同。我不确定如何让它正确验证,因为它将不同的键值视为 xml 中的差异,即使它只是订单更改。
我断言与 JUnit 中的以下断言相似:
assertThat(marshalledXml, isSimilarTo(Input.fromFile("path/to/example.xml").ignoreWhitespace().ignoreComments());
我怀疑我可能需要使用 XPath 匹配器或带有 ElementSelector 的 DefaultNodeMatchers。
是的,您需要提供一个 ElementSelector
"knows" 在您的特定情况下选择哪些节点进行比较。
对于大多数文档,元素的名称似乎是您应该使用的名称。至少 entries
、key
和 value
是这样。对于 entry
元素,您想比较那些元素,这些元素在 key
元素中具有匹配的嵌套文本,是它们的直接子元素,对吗?
我认为这可以转化为
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("entry")
.thenUse(ElementSelectors.byXPath("./key", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
有关 ElementSelector
选项的更详细讨论,请参阅 https://github.com/xmlunit/user-guide/wiki/SelectingNodes。您的 XML 与介绍中使用并在下一节中讨论的 table
示例非常接近。