我正在使用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");


有很大帮助。

10-06 10:04