gpt4 book ai didi

java - XMLUnit RecursiveElementNameAndTextQualifier 不起作用

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

您好,我正在尝试使用 XML 单元 RecursiveElementNameAndTextQualifier ,但我的下面的测试失败了。当我在下面的测试 xml 文件中交换 foo3 和 foo2 的值时,测试通过 true (对于 diff.similar()) 。不确定问题是什么。RecursiveElementNameAndTextQualifier 只会到达特定深度?

控制:

<table>
<tr>
<td>
<a>foo</a>
<a>foo1</a>
</td>
<td>
<a>foo2</a>
<a>foo3</a>
</td>
</tr>
<tr>
<td>
<a>bar</a>
</td>
</tr>
</table>


**Test:**
<table>
<tr>
<td>
<a>bar</a>
</td>
</tr>
<tr>
<td>
<a>foo3</a>
<a>foo2</a>
</td>
<td>
<a>foo1</a>
<a>foo</a>
</td>
</tr>
</table>


DetailedDiff detDiff = new DetailedDiff(diff);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());

XMLUnit.setNormalizeWhitespace(true);
System.out.println("Similar? " + diff.similar());

最佳答案

当你交换 foo2 和 foo3 行时,事情似乎会更好,但这只是偶然的。如果您告诉 XMLUnit 不要随机匹配它不应该匹配的元素

XMLUnit.setCompareUnmatched(false);

你会看到完全不同的图片。

[different] Expected presence of child node 'tr' but was 'null' - comparing <tr...> at /table[1]/tr[1] to  at null
[not identical] Expected sequence of child nodes '3' but was '1' - comparing <tr...> at /table[1]/tr[2] to <tr...> at /table[1]/tr[1]
[different] Expected presence of child node 'null' but was 'tr' - comparing at null to <tr...> at /table[1]/tr[2]

RecursiveElement... 选择带有嵌套条形文本的 tr,但根本不考虑其他两个 tr 的可比性。 XMLUnit 只是选择它们,因为没有其他匹配项(并且按顺序选择元素是默认的回退,除非您使用上面的标志。

RecursiveElementNameAndTextQualifier 仅当子元素以完全相同的顺序出现时才有效 - 对于 tr 的子元素而言不是这种情况,甚至对于 tr 的子元素也不是这样tds。

关于java - XMLUnit RecursiveElementNameAndTextQualifier 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752354/

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