XMLUnit 在为有效 xml 创建 Diff 对象时抛出 NullPointerException
XMLUnit throws NullPointerException when creating Diff object for valid xml
我正在使用 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,甚至是我在互联网上找到的非常简单和小巧的 xml,但没有任何效果。
哦,我刚刚发现 XMLUnit.setIgnoreWhitespace(true);
导致了这个问题,因为在项目中我使用的是古代版本的 Saxon 库,它在 8.9 版中得到了修复,但是这个:
XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl");
很有帮助。
我正在使用 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,甚至是我在互联网上找到的非常简单和小巧的 xml,但没有任何效果。
哦,我刚刚发现 XMLUnit.setIgnoreWhitespace(true);
导致了这个问题,因为在项目中我使用的是古代版本的 Saxon 库,它在 8.9 版中得到了修复,但是这个:
XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl");
很有帮助。