我有两个 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/