我有以下方法:
public static void assertXMLEquals(String expectedXML, String actualXML) throws Exception {
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreAttributeOrder(true);
DetailedDiff diff = new DetailedDiff(XMLUnit.compareXML(expectedXML, actualXML));
List<Difference> allDifferences = diff.getAllDifferences();
Assert.assertEquals("Differences found: " + diff.toString(), 0, allDifferences.size());
}
来自班级:http://www.xmlunit.org/api/java/2.4.0/org/custommonkey/xmlunit/Diff.html
如果存在差异,则打印出来:例如:
[different] Expected attribute value 'false' but was 'true' - comparing <attribute name="false"...> at //journey[1]/attribute[1]/@name to <attribute name="true"...> at /journeyDetails[1]/journey[1]/attribute[1]/@name
有没有办法可以覆盖它来打印行号?
答案 0 :(得分:1)
XMLUnit的差异引擎在DOM节点级别工作,并且DOM API不公开此位置信息,因此它根本不作为Difference
的一部分提供。所以不,你根本得不到行号。
如果可以而且您使用的是XMLUnit 2.x API而不是旧版API,那么可以采用toString
的{{1}}重载来Diff
与你自己的实现。但这没有实际意义,因为XMLUnit 1.x和2.x都无法为您提供行号。