我正在使用org.custommonkey.xmlunit; (version 1.2)
。
在构建Diff
对象时:
Diff diff = new Diff(expected, generated);
我总是有NullPointerException,因为它在this.controlDoc = this.getManipulatedDocument(controlDoc);
上失败了。
调试时,我在第一个构造函数中发现了这一点:
public Diff(String control, String test) throws SAXException, IOException {
this((Reader)(new StringReader(control)), (Reader)(new StringReader(test)));
}
但是,在以下情况下存在适当的xml:
public Diff(Reader control, Reader test) throws SAXException, IOException {
this(XMLUnit.buildDocument(XMLUnit.newControlParser(), control), XMLUnit.buildDocument(XMLUnit.newTestParser(), test));
}
被称为在调试器
[#document: null]
中看到。为什么呢?我尝试了许多xml,甚至在Internet上找到的非常简单和很小的XML,但都无济于事。 最佳答案
哦,我刚刚发现XMLUnit.setIgnoreWhitespace(true);
会导致此问题,因为在项目中我使用的是古代版本的Saxon库,并且在8.9版中已对此进行了修复,但是:
XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl");
有很大帮助。