您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 >
追求代码质量: 探究 XMLUnit
作者:网络转载 发布时间:[ 2013/2/25 14:18:01 ] 推荐标签:

注意一下我是如何实例化 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());
}


相似和相同的 XML 文档之间的差异是很微小的;但若能验证两者却非常有用,例如在需要测试由不同应用程序或客户程序生成的文档的情况下。

验证结构

除了验证内容之外,您还需要验证 XML 文档的结构。在这种情况下,元素和属性的值并不重要 —— 您所关心的是结构。

还好,我还可以再次使用清单 3 中定义的测试用例来验证文档的结构,并可以有效忽略元素文本值和属性值。为实现此目的,我调用 Diff 类上的 overrideDifferenceListener() 并为它添加由 XMLUnit 提供的 IgnoreTextAndAttributeValuesDifferenceListener。修改后的测试如清单 7 所示:

清单 7. 无需属性值验证 XML 结构

    
public void testToXMLFormatOnly() throws Exception{
 BatchDependencyXMLReport report =
   new BatchDependencyXMLReport(new Date(), this.getFilters());

 report.addTargetAndDependencies(
   "com.acme.web.Widget", this.getDependencies());
 report.addTargetAndDependencies(
   "com.acme.web.Account", this.getDependencies());
 
 Diff diff = new Diff(new FileReader(
   new File("./test/conf/report-control.xml")),
   new StringReader(report.toXML()));

 diff.overrideDifferenceListener(
   new IgnoreTextAndAttributeValuesDifferenceListener());
 assertTrue("XML was not similar", diff.similar());  
}

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd