首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TestNG 使 Java 单元测试轻而易举(1)

TestNG 使 Java 单元测试轻而易举(1)

在每个现代软件包的构造阶段,测试这一实践都扮演着中心角色。过去那种先编写代码,然后有空的时候再测试(或者根本不测试)的日子已经一去不返,因为大多数开发人员现在认识到需要采用编码和测试彼此交织、同步推进的软件方法论,以便尽早发现            bug,在开发过程开始的时候就识别出主要的风险。
JUnit 超过了其他测试框架,推动开发人员理解了测试尤其是单元测试的用途。利用一个相当简单、实用、严格的架构,JUnit            已经能够“传染”大量开发人员。(有关“被测试传染”的更多信息,请参阅 。) JUnit            用户已经学会了单元测试的一些基本规则:
  • 每段代码都必须经过测试。
  • 只要有可能,代码的测试必须隔离进行(例如,使用像 模拟对象这样的技术 )。
  • 软件必须容易测试 —— 也就是说, 在编写的时候要想着测试
但是,随着开发人员对测试的信任增长,JUnit 的简单性和严格性把他们分成两个相反的派别。一方面,有些人坚信 JUnit            的简单性对于不断地提醒程序员软件也必须保持简单来说是必不可少的(这称为 KISS 原则,代表 keep it simple,            stupid);另一方面,有些人认为 JUnit 不是简单而是简化,所以他们想要从测试框架得到新的高级特性、更大的灵活性和更强大的能力。JUnit            的一些特殊特性,就是为了满足这个群体的一些具体批评而推出的:
  • 因为 Java 语言的单继承性,所以必须扩展 TestCase类的限制很大。
  • 无法向 JUnit 的测试方法传递参数,也无法向 setUp()和 tearDown()方法传递参数。
  • 执行模型有点奇怪:每次执行一个测试方法的时候,都要重新实例化测试类。
  • 管理复杂项目中的不同测试套件有可能非常复杂。
TestNG 的创造者TestNG 的创造者是 Cedric Beust,他在 Java 编程领域非常出名,是 EJB 3 专家组的成员,也是其他一些流行的开源项目(例如 EJBGen 和               Doclipse)的创造者。TestNG 在 Apache 软件许可条款约束下发布,并可从其 Web 站点下载(请参阅 中到该站点和 Cedric 站点的链接)。

在本文中,您将学习到如何用这个叫做 TestNG的新测试框架为应用程序编写单元测试。TestNG 的灵感来自            JUnit,同时尽量保持后者的简单性;但是,TestNG 消除了老框架的大多数限制,使开发人员可以编写更加灵活、更加强大的测试。由于 TestNG 大量借用 Java            Annotation(随 JDK 5.0 引入;有关这个新特性的更多信息,请参阅 )来定义测试,所以本文也可以向您演示如何在实际的生产环境中使用 Java 语言的这个新特性。
关于代码为了演示 TestNG 的用法,我要为叫做 Jakarta Common Lang 的这个广泛应用的开源库(其中包含一些处理和操纵字符串、数字和 Java            对象的有用的类)编写一些单元测试。在下面的 一节中,您可以找到 TestNG 和 Jakarta Common            Lang 库的链接;如果您想在自己的机器上随着本文一起练习,这二者都需要下载。
可以在两个不同的包中得到 TestNG:一个包要求 JDK 5.0,另一个包与 Java 语言 1.4 版本兼容。定义测试的时候,它们使用的语法略有差异:前者使用 JDK            5.0 标注,后者使用旧的 Javadoc 风格的标注。本文使用的是 JDK 5.0 版本,所以在继续阅读本文之前,需要对标注有基本的了解;您可以在 中找到关于这个主题的 developerWorks 资源的链接。但是,您要知道               只有在编译和运行测试的时候才需要 JDK 5.0,所以您仍然可以用自己喜欢的编译器来构建应用程序。实际上,您将用从 Jakarata 项目的 Web            站点下载的相同 JAR 文件来测试 Jakarta Common Lang 库。关于使用 Java 平台 1.4 版本的 TestNG 的更多细节,可以在 TestNG 的            Web 站点上找到。
最后,请单击本文顶部或底部的 Code图标,下载 j-testng-sample.zip 文件,其中包含一些示例,演示了如何用 TestNG            为 Jakarta Commons Lang            编写单元测试。在里面,可以找到这里给出的大多数代码,还有其他一些示例。阅读本文并不需要这些代码,但是它可以帮助您更加深入地理解在这里介绍的概念。
返回列表