我需要有关 ComparisonFormatter 的帮助。我无法在网上找到很多关于 ComparisonFormatter 的示例。
我正在使用 XMLUnit 2.8.2。我正在尝试比较两个 xml 文件,而不管它们的顺序如何。当响应有序或不有序时,下面的代码可以正常工作。问题是当响应不匹配时。例如,当 INFOId 在控制响应中等于 FQ001 和在测试响应中等于 FA001 时。在这种情况下,我得到响应“ [Expected child 'INFO' but was 'null' - comparison <INFO...> at ...etc ” 经过一番研究,我发现我应该使用 ComparisonFormatter 来获得更详细的响应. 有人可以给我一些如何使用ComparisonFormatter的例子吗?如果使用 ComparisonFormatter 不是正确的方法,那么请引导我走向正确的方向。
String controlXml = "<Return><INFO><Area>0</Area><INFOId>AA23414</INFOId></INFO><INFO><Area>0</Area><INFOId>FQ001</INFOId></INFO></Return>";
String testXml = "<Return><INFO><Area>0</Area><INFOId>FA001</INFOId></INFO><INFO><Area>0</Area><INFOId>AA23414</INFOId></INFO></Return>";
DiffBuilder builder = DiffBuilder.compare(controlXml).withTest(testXml)
.checkForSimilar()
.ignoreWhitespace()
.normalizeWhitespace()
.ignoreComments()
.checkForSimilar()
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder()
.whenElementIsNamed("INFO")
.thenUse(ElementSelectors.byXPath("./INFOId", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build()));
int i = 0;
org.xmlunit.diff.Diff diff = builder.build();
if (diff.hasDifferences())
{
System.out.println(diff.getDifferences());
i++;
}
System.out.println("Size = " +i);
提前致谢!任何帮助将不胜感激。