我很难让xmlunit使用setIgnoreWhitespace忽略我的XML中的空格...你知道哪里出了问题或者我可以检查什么吗?
JVM: 1.6,XMLUnit 1.3,集成开发环境: JDeveloper 11.1.1.6
例如,下面返回“子节点的预期数量'2‘,但却是'1'”。如果我去掉额外的空格,它就会通过。
@Test
public void testExample() {
String inputXML = "<test><innertest>data</innertest></test>";
String expectedResultXml = "<test> <innertest>data</innertest></test>";
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);
try {
assertXMLEqual("Did not match!!", expectedResultXml, inputXML);
} catch(Exception e) {}
}发布于 2012-12-12 19:21:16
我的类路径中一定有一些不兼容的XML库。如下所示覆盖JAXP库解决了这个问题(还添加了xerces和xalan jar)。
XMLUnit.setControlParser("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
XMLUnit.setTestParser("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
XMLUnit.setSAXParserFactory("org.apache.xerces.jaxp.SAXParserFactoryImpl");
XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl"); 发布于 2012-12-12 20:45:16
这看起来有点像您所期望的那样,任何空格字符都将被忽略,但对于该设置来说,情况并非如此。
请参阅XMLUnit.setIgnoreWhitespace
比较节点值时是否忽略空格。
..。
设置此参数对文本中的空白没有影响。
此设置并不意味着将删除(且不检查)纯空格文本节点。这只意味着在比较<test>元素的节点值时会忽略空格。但那次测试并没有导致这条消息。在您的例子中,对子节点计数的检查确实引发了消息。
有关更详细的说明和更多配置选项(例如XMLUnit.setNormalizeWhitespace),请参阅3.8.1. Whitespace Handling。
发布于 2015-09-24 21:43:42
像@user392909那样覆盖JAXP库对我来说并不成功。
但我的项目中与另一个库的冲突是根本原因。首先,我更改了一些库的导入顺序,最终修复了测试。因此,我能够识别出冲突的库。是j2ee.jar。
我删除了它(不得不用tomcat-catalina.jar、tomcat-juli.jar和javamail.jar替换它,以解决即将出现的编译错误)。
导入顺序不再重要,因为j2ee.jar已被移除/替换,并且xml diff现在可以按预期工作。
https://stackoverflow.com/questions/13835996
复制相似问题