第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共7页诊断Java代码:单元测试与自动化代码分析协同工作文章出处:DevelopWorks作者:转载发布时间:2005-10-19单元测试和静态分析通常被看作是有助于确保程序的正确性的互不相干的方法
本文研究了这两种方法之间的关系,并讨论了构成每种方法工作构架的工具如何相得益彰
特别地,EricAllen讨论了一些可用而又令人兴奋的新应用程序,这些应用程序允许您进一步提升您的单元测试
这是一场古老的争论—哪种方法对产生健壮代码更有价值:测试还是静态分析和验证
您会在程序员的日常工作中听到这种争论,尤其是在极端编程(ExtremeProgramming)论坛上
(请参阅我们由RoyMiller主持的XP论坛
)支持静态分析(包括类型检查)的主要论据是:其结果适用程序所有可能的运行,而通过单元测试只能保证被测试的组件(在测试它们的平台上)只适用测试组件的特定输入
支持单元测试的主要论据是它更容易处理
您可以测试程序的许多约束,这些约束远远超出了同期的静态分析工具所能达到的范围
请允许我在此冒昧地说一句:我认为将这两种工具看作对立的是一个错误
每种工具都有助于构建更健壮的程序
实际上,它们可以通过非常强大的方式进行互补
每种工具都有各自的长处,对于补充另一种工具特别有用:单元测试能显示执行的常用路径,从而显示程序是如何运行的
分析工具能检查单元测试提供的覆盖范围
让我们研究这其中的每个属性,并讨论一些可帮助您将其长处带给其它方法的工具
显示常用执行路径的单元测试单元测试套件提供了程序组件的示例用法的稳固基础
通过检查测试运行时程序是如何运作的,分析工具可以就开发人员希望在程序中保持的不变量进行试探性推测(就和程序员阅读单元测试所做的一样)
还有另一种方法,其中单元测试可以是一种可执行的文档形式