快速业务通道

诊断Java代码: 单元测试与自动化代码分析协同工作 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
ues.elementAt(i);   } } interface Sequence {   public void insert(Object o);   public Object lookup(int i); }

当 Daikon 在这段代码上运行时,它可能推断:对于方法 lookup , i 总是小于 length 。Daikon 可能从单元测试中推断出这一点,并向我们的方法报告一条前置条件: i < length 。

然后程序员可以检查 Daikon 报告的不变量,从而更好地了解其测试覆盖程序的范围到底怎么样。例如,如果 Daikon 开始推断出大量不想要的不变量,这意味着单元测试只是用不具代表性的可能的程序输入的子集检测了程序。

尽管 Daikon 是用 Java 语言编写的,但它需要用 C++ 编写的前端,这削弱了它原有的可移植性。尽管如此,还是可以在线获得针对许多主要平台的前端构建。此外,Daikon 团队也打算添加其它平台所需要的构建。

可以检查单元测试覆盖范围的分析工具

分析工具可以帮助程序员构建健壮的单元测试套件。迄今为止,完成这一工作主要有两种方法:

使用静态分析以尝试自动生成单元测试套件

使用静态分析来确定单元测试套件对程序功能的覆盖范围到底怎么样

目前有几种试图自动从代码产生单元测试的免费工具,但大多数担任这项任务的免费工具还处于起步阶段。

关于这些类型的工具,要牢记的要点是:最适宜应用于通过测试更新旧代码。当构建新项目时,它们的作用不大。

为什么会这样呢?因为新项目应该与项目上的单元测试是一前一后构建的。开发单元测试是构建设计的强有力的方法;针对组件的 API 就是在编写测试时隐式地为它们设计的。此外,以这种风格进行设计向设计师提供了即时的反馈。糟糕的设计将非常难于编写测试!并且,任何分析工具在确定为程序编写什么测试这方面,都很难做得象设计师那样好。

第二种分析工具分析程序及其单元测试,并确定测试能在多大范围内覆盖程序。与刚才提到的第一类工具不同,此类工具对每个项目都是有用的。实际上,极端编程团队可以考虑将此类工具集成到他们的代码提交过程中。那么,他们不仅能够防止代码在通过所有测试之前被提交,而且可以防止代码在未经测试的情况下提交!不仅懒惰会导致测试覆盖范围偏小,错误也可能导致同样后果,因此,此类强制措施对任何技能(和完整性)级别的程序员都有用。

Clover 是一种可以执行此类分析的新的并且特别有希望的工具。Clover 是 Ant 的插件,Ant 是 make 的流行的、全 Java 的替代物。Clover 是商业工具,但它可以免费用于开放源码项目。

诊断Java代码: 单元测试与自动化代码分析协同工作(3)

时间:2011-02-12 IBM Eric E. Allen

Clover 分两阶段过程进行工作。首先,它在编译时检测代码。然后,在测试时将有关测试的运行信息写到用来生成报告的数据库中(通过 GUI、网页或在控制台中)。

将 Clover 集成到使用 Ant 的现有项目中很简单。这涉及调整项目的 build.xml 文件以添加几个在编译、记录测试和生成报表期间检测代码的目标。例如,假定我们有一个带构建和编译目标的 build.xml 文件。我们所必须做的全部工作是将 Clover JAR 文件放到我们的 Ant 库目录中,并如下所示扩展 build.xml 文件(Clover 用户指南中提供了这些和类似于 Ant 目标的信息;为了方便,我在这里包括了它们):

清单 3. 扩充 Ant build.xml 文件以使用 Clover

<property name="clover.initstring" value="/tmp/mycoverage.db"/> <target name="with.clover">    <property name="build.compiler"        value="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/> </target> <path id="clover.classpath">   <pathelement path="<

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号