追求代码质量: 探究 XMLUnit
2009-11-19 00:00:00 来源:WEB开发网注意一下我是如何实例化 XMLUnit 的 setControlParser、setTestParser 和 setSAXParserFactory 方法的。您可以为这些值使用任何兼容 JAXP 的解析器。还要注意我是用 true 调用 setIgnoreWhitespace 的 —— 这是一根救命稻草,相信我!否则,不一致的空白会导致很多故障。
用 Diff 比较
Diff 类支持两种比较:identical 和 similar。如果所比较的文档在结构和值(如果设置了标志就忽略空白)方面都完全相同,那么它们就被认为是 identical;如果两个文档是完全相同的,那么它们也就很自然的是 similar 的。反之,却不一定。
例如,清单 4 是与清单 5 相似的一个简单的 XML 代码片段,但二者并不相同:
清单 4. 一个帐号 XML 片段<account>
<id>3A-00</id>
<name>acme</name>
</account>
清单 5 中的 XML 片段与清单 4 中所示的 XML 片段有相同的逻辑文档。但 XMLUnit 并不认为二者是相同的,原因是二者的 name 和 id 元素是颠倒的。
清单 5. 一个相似的 XML 片段<account>
<name>acme</name>
<id>3A-00</id>
</account>
相应地,我可以编写测试用例来验证 XMLUnit 的行为,如清单 6 所示:
清单 6. 用来验证相同性和相似性的测试public void testIdenticalAndSimilar() throws Exception {
String controlXML = "<account><id>3A-00</id><name>acme</name></account>";
String testXML = "<account><name>acme</name><id>3A-00</id></account>";
Diff diff = new Diff(controlXML, testXML);
assertTrue(diff.similar());
assertFalse(diff.identical());
}
更多精彩
赞助商链接