Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印XMLUnit中所有差异的惯用方法是什么?_Java_Xmlunit 2 - Fatal编程技术网

Java 打印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

我试图用一个(文本)报告覆盖默认的XMLUnit行为,即只报告两个输入之间发现的第一个差异,该报告包含发现的所有差异

到目前为止,我已经完成了以下工作:

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年后,你是否已经知道你的直觉是否正确。您是否仍在使用给定的解决方案?