技术开发 频道

利用Ant和JUnit进行增量开发

  了解测试的工作原理
  让我们搞点破坏,然后看看会发生什么事。夜深了,我们决定把 "Hello World" 变成一个静态字符串。在更改期间,我们 不小心 打错了字母,将 "o" 变成了 "0",如清单 6 所示。

  清单 6. Hello world 类更改
package com.company; public class HelloWorld { private final static String HELLO_WORLD = "Hell0 World"; public String sayHello() { return HELLO_WORLD; } } 

在构建包时,我们看到了错误。清单 7 显示了 runtest 中的错误。它显示了失败的测试类和测试方法,并说明了为什么会失败。我们返回到代码中,改正错误后离开。

清单 7. 构建错误示例
E:\projects\sample>ant runtests Searching for build.xml ... Buildfile: E:\projects\sample\build.xml JUNIT: compile: jar: compiletests: runtests: [junit] ..F [junit] Time: 0 [junit] [junit] FAILURES!!! [junit] Test Results: [junit] Run: 2 Failures: 1 Errors: 0 [junit] There was 1 failure: [junit] 1) testSayHello(test.com.company.HelloWorldTest) "expected:<Hello World> but was:<Hell0 World>" [junit] BUILD FAILED E:\projects\sample\build.xml:35: Java returned: -1 Total time: 0 seconds 

  并非完全无痛
  新的过程并不是完全无痛的。为使单元测试成为开发的一部分,您必须采取以下几个步骤:

  下载和安装 JUnit。
  下载和安装 Ant。
  为构建创建单独的结构。
  实现与主类分开的测试类。
  学习 Ant 构建过程。
  但好处远远超过了痛苦。通过使单元测试成为开发过程的一部分,您可以:

  自动验证以捕捉更改“臭虫”
  从接口角度设计类
  提供干净的示例
  在发行包中避免代码混乱和类膨胀。
  实现 24x7
  保证产品的质量要花费很多钱,但如果质量有缺陷,花费的钱就更多。如何才能使所花的钱获得最大价值,来保证产品质量呢?

  评审设计和代码。 评审可以达到的效果是单纯测试的一半。
  通过单元测试来确认模块可以使用。 尽管测试早就存在,但随着开发实践的不断发展,单元测试逐渐成为日常开发过程的一个部分。
  在我 10 年的开发生涯里,为 emageon.com 工作是最重要的部分之一。在 emageon.com 时,设计评审、代码评审和单元测试是每天都要做的事。这种日常开发习惯造就了最高质量的产品。软件在客户地点第一年的当机次数为零,是一个真正的 24x7 产品。单元测试就象刷牙:您不一定要做,但如果做了,生活质量就更好。

  参考资料

  您可以参阅本文在 developerWorks 全球站点上的 英文原文 .

  下载在本文中引用的 示例代码 。

  从 Apache 网站下载 Ant。如需 Ant 文档、FAQ 和其他下载,请访问 Jakarta 项目的Ant 主页 。

  JUnit 主页 提供了额外的测试示例、文档、文章和 FAQ。您可以从 http://www.xprogramming.com/ 下载 JUnit 3.2。

  Kent Beck 所写的 “简单的 Smalltalk 测试”(Simple Smalltalk Testing) 讨论了一个简单的测试策略和支持它的框架。

  请参阅其它开发者的有关单元测试的评论 (comments on unit testing) 。

  要了解其它有用的开发习惯,请访问 终极编程主页 (Extreme Programming Home page) 。

0
相关文章