gpt4 book ai didi

java - 基于值的 XmlUnit 顺序

转载 作者:行者123 更新时间:2023-12-01 10:06:36 25 4
gpt4 key购买 nike

我正在 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,它“知道”在您的具体情况下选择哪些节点进行比较。

对于文档的大部分内容,元素的名称似乎是您应该使用的名称。至少对于 entrieskeyvalue 来说是这样。对于 entry 元素,您想要比较那些在其直接子元素 key 元素中具有匹配嵌套文本的元素,对吗?

我认为这可以翻译为

ElementSelectors.conditionalBuilder()
.whenElementIsNamed("entry")
.thenUse(ElementSelectors.byXPath("./key", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();

参见https://github.com/xmlunit/user-guide/wiki/SelectingNodes有关 ElementSelector 选项的更详细讨论。您的 XML 与简介中使用的以及下一节中讨论的 table 示例非常接近。

关于java - 基于值的 XmlUnit 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com