java - Junit - 比较两个 XML 文档是否相同

标签 java junit xunit

我有两个 XML 文件,我使用 XUnit 使用以下测试对它们进行比较:

@Test
public void testSortXML() throws IOException
{
    field = "userid";
    outputStream = new ByteArrayOutputStream();
    xmlStreamSorter.sort(inputStream, outputStream, comparator);
    ByteArrayInputStream expected = new ByteArrayInputStream("<?xml version=\"1.0\" encoding=\"UTF-8\"?> <users><user><userid>10</userid></user><user><userid>3</userid></user><user><userid>1</userid></user></users>"
            .getBytes());

    System.out.println(outputStream);
    Assert.assertThat(expected, CompareMatcher.isIdenticalTo(outputStream));

}

但是测试失败并出现以下错误:

Expected child nodelist length '3' but was '0' - comparing <users...> at /users[1] to <byteArrayOutputStream...> at /byteArrayOutputStream[1] (DIFFERENT)

这是输出变量的内容:

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <userid>10</userid>
  </user>
  <user>
    <userid>3</userid>
  </user>
  <user>
    <userid>1</userid>
  </user>
</users>

它们是相同的。怎么测试失败了?

最佳答案

问题是我没有忽略空格。 要使用 XUnit 2.x 执行此操作,只需按以下方式创建自定义 Diff:

Diff xmlDiff = DiffBuilder.compare(expected)
    .withTest(outputStream.toString())
    .ignoreComments()
    .ignoreWhitespace()
    .build();

然后你可以这样做:

Assert.assertFalse(
    "The resulting XML is not correctly sorted",
    xmlDiff.hasDifferences()
);

关于java - Junit - 比较两个 XML 文档是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442851/

相关文章:

asp.net-mvc - ASP.Net Web API Controller 单元测试 POST

jenkins - 如何让 xunit 在失败时停止 Jenkins 管道?

java - 我如何使用 Java 在 Linux 中找到计算机类型?

java - 将作业从 eclipse 提交到 amazon EMR 上正在运行的集群

java - Controller 单元测试无法 Autowiring 所需的 bean

java - 确定运行 JUnit 测试时变量未重置为默认值的原因

unit-testing - AppHarbor 如何选择要进行单元测试的内容?

java - Jersey UnmarshalException JAXB,带有多个 getEntity() 的 XML

java - 如何使用java代码根据building_Id和floor_Id从MongoDB获取数据?

java.lang.NoClassDefFoundError : com/sun/mail/util/MailLogger for JUnit test case for Java mail