Java 打印XMLUnit中所有差异的惯用方法是什么?
我试图用一个(文本)报告覆盖默认的XMLUnit行为,即只报告两个输入之间发现的第一个差异,该报告包含发现的所有差异 到目前为止,我已经完成了以下工作:Java 打印XMLUnit中所有差异的惯用方法是什么?,java,xmlunit-2,Java,Xmlunit 2,我试图用一个(文本)报告覆盖默认的XMLUnit行为,即只报告两个输入之间发现的第一个差异,该报告包含发现的所有差异 到目前为止,我已经完成了以下工作: private static void reportXhtmlDifferences(String expected, String actual) { Diff ds = DiffBuilder.compare(Input.fromString(expected)) .withTest(Input.fromString(actua
private static void reportXhtmlDifferences(String expected, String actual) {
Diff ds = DiffBuilder.compare(Input.fromString(expected))
.withTest(Input.fromString(actual))
.checkForSimilar()
.normalizeWhitespace()
.ignoreComments()
.withDocumentBuilderFactory(dbf).build();
DefaultComparisonFormatter formatter = new DefaultComparisonFormatter();
if (ds.hasDifferences()) {
StringBuffer expectedBuffer = new StringBuffer();
StringBuffer actualBuffer = new StringBuffer();
for (Difference d: ds.getDifferences()) {
expectedBuffer.append(formatter.getDetails(d.getComparison().getControlDetails(), null, true));
expectedBuffer.append("\n----------\n");
actualBuffer.append(formatter.getDetails(d.getComparison().getTestDetails(), null, true));
actualBuffer.append("\n----------\n");
}
throw new ComparisonFailure("There are HTML differences", expectedBuffer.toString(), actualBuffer.toString());
}
}
但我不喜欢:
差异
defaultcomparisonformat
的内部,并使用null
ComparisonType调用getDetails
也许这只是出于一种不合理的坏直觉,但我想知道是否有人对此用例有一些意见。XMLUnit建议只打印出差异,请参阅“Old XMLUnit 1.x DetailedDiff”一节: 您的代码如下所示:
private static void reportXhtmlDifferences(需要字符串,实际字符串){
Diff ds=DiffBuilder.compare(输入.fromString(预期))
.withTest(输入.fromString(实际))
.checkForSimilar()
.normalize空白()
.ignoreComments()
.withDocumentBuilderFactory(dbf).build();
if(ds.hasDifferences()){
StringBuffer=新的StringBuffer();
for(差异d:ds.getDifferences()){
append(d.toString());
}
抛出新的RuntimeException(“存在HTML差异\n”+buffer.toString());
}
}
3年后,你是否已经知道你的直觉是否正确。您是否仍在使用给定的解决方案?