测试开发

《JUnit实战》第9章 从 Ant中运行JUnit 测试

第3部分 JUnit与构建过程

本书的这一部分讨论了每个项目的开发周期中非常重要的一方面:构建过程。今构建过程的重要性在项目开发过程中会更多地被重新考虑,尤其是在大型项目中。这就是为什么我们会花费这个部分的篇幅来介绍JUnit和两个最重要的构建工具Ant 与Maven的集成。

第9章将帮助你快速了解Ant 及其术语:任务、目标和构建。我们讨论了如何将测试作为Ant构建生命周期中的一部分来启动它,并且我们也展示了如何根据JUnit的执行结果生成一些特定的报告。本章可以看作是后面章节的基础,因为你只有充分掌握了Ant,才能更好地理解在本书后面章节中谈到的所有关于Ant集成的内容。

第10章会带领你掌握相同的概念,但这次是通过另一个称为Maven 的流行工具来介绍的。我们为你展示了如何在Maven构建生命周期中包含测试的执行,并且如何使用—些Maven插件生成美观的HTML报告。

本书这一部分的最后一章将专门讨论持续集成(CI)工具。极限编程人员高度推崇这项实践,同时这可以帮助你维护一个代码库,并且自动化在它之上的构建。这有助于构建那些依赖于其他几个小项目的大型项目,而这几个小项目又会经常发生变化(就像任何开源项目那样)。

第9章 从 Ant中运行JUnit 测试

It 's supposed to be automatic, but you still have to press the button.

虽然它应该是自动的,但你还是不得不按下按钮。

——John Brunner

本章重点

介绍 Ant和 lvy

运行 Ant JUnit任务

创建报告

在本章中,我们介绍了Apache Ant(简称Ant),它是一款免费的开源构建工具,能够直接支持JUnit。你可以在任何Java编程环境中使用Ant。我们为你展示了将运行测试作为构建的一部分是如何更加高效地使用JUnit。我们也详细介绍了如何针对构建Java项目、管理JAR文件的依赖项、执行JUnit测试和生成JUnit 报告设置环境。

9.1 生命中的一天

为了使单元测试有效,它们必须是开发流程的一部分。大部分的开发周期从项目源码仓库(repository)中导出模块开始。在进行任何修改之前,谨慎的开发者会首先运行所有的单元测试集。许多团队有一个规定:必须通过工作库中的所有单元测试。在开始进行任何开发之前,你应该检查确保所有的测试都通过了。也就是说,你应该始终确保你的工作是从已知的基线平稳开始。

下一步骤是为一个新的用例编写代码(或者修改一个已有的用例)。如果你是一名测试驱动开发(TDD)的实践者,那么你就会先开始针对用例编写新的测试(关于TDD 的更多内容,可以参见第5章)。一般来说,测试将表明你的用例尚未被支持,要么无法通过编译,要么会在执行时出现错误。一旦你编写代码(正确地)实现了这个用例,那么测试就会顺利通过,并且你就可以提交你的代码了。而非测试驱动开发的实践者首先实现用例,然后再编写测试。一旦测试通过,开发人员就可以提交代码了。

在你为下一个功能进行编码前,你必须有一些测试来证明功能能够正常工作。在你实现了这项功能之后,你能够为了整个项目运行这些测试,确保新功能不会破坏任何现有的测试。如果现有的代码需要进行修改才能适应新的功能,你就应该首先更新测试,然后再对现有的代码进行修改。

如果你的测试很严格,为了帮助你编写新的代码(TDD),同时确保现有的代码不会与新功能有所冲突(回归测试'),你就必须把持续地运行单元测试作为开发周期的一个常规环节。你还必须能够在任何时候都毫不费力地自动运行这些测试。

在第1章的1.4小节中,我们讨论了以命令行方式运行JUnit。针对单个的类运行单个的 JUnit测试用例并不困难。但是,要在一个拥有数百个甚至数千个类的项目中执行持续的测试就是非常不切实际的。

在被全面测试的项目中,每一个产品类至少有一个测试类与之相对应。你不能指望开发人员每天手动地执行整套的回归测试。因此,你需要采用一种方法来轻松、自动地执行测试。

因为你要编写了如此多的测试,所以你就应该尽可能地以最有效的方式来编写和运行测试。Ant是构建Java应用程序的事实上的标准工具,它是一个非常出色的工具,可以用来管理和自动化JUnit测试。

9.2 从Ant中运行测试

要编译和测试单个的类,如第3章中的 DefaultController类,这并不困难。但是,如果你唯一的工具是javac命令行编译器,那么要编译一个包含多个类的大型项目就可能是非常令人头疼的。当类的数量不断增加,就有更多的类需要置于编译器的类路径(classpath)中,以便编译器能够找到它们。通常,在任何一次构建中,你只需要修改其中的一小部分类,这也给我们带了一个问题:将需要重新构建的次数减到最少。因为相同的原因,在每次构建之后重新手动运行你的JUnit测试也同样不方便。

Ant可以解决以上两个问题。Ant不仅是一个构建应用程序的重要工具,也是一种运行JUnit测试的重要方式。

9.3 认识并安装Ant

Ant流行的原因之一是它不仅仅是一个工具:Ant是一个运行代码的框架。除了使用Ant 来配置和启动一个Java编译器,你还可以使用它来复制文件、运行JUnit测试集、创建报告等。

你可以通过一个XML文件来配置Ant,这个XML文件被称为构建文件(buildfile),它默认被命名为build.xml。Ant构建文件描述了每一个你想在项目中执行的任务。一个构建文件可以有若干个目标(target)或者叫切入点(entry point),这样你就能够运行单个目标或将几个目标链接在一起。让我们来看一下如何将使用Ant自动运行测试作为构建的一部分。如果你还没有安装Ant,可以阅读以下的安装步骤。关于安装Ant的更详细内容,可以参考Ant用户手册((http://ant.apache.org.manual/)。

在Windows操作系统上安装 Ant

要在 Windows操作系统上安装Ant,可以按照以步骤进行操作:

1 将ZIP发布包文件解压缩到一个本地目录下(例如C:Ant )。在这个目录中,解压缩操作会为这个Ant发布包创建一个子目录,例如 C:\Antlapache-ant-1.8.0。

2 在你的环境变量中增加一个 ANT_HOME 变量,这个变量的值就是这个目录,例如:

变量名:ANT HOME

变量值:C: AAntlapache-ant-1.8-0

3 编辑你的PATH环境变量,以添加%ANT_HOME% bin目录:

变量名:PATH

变量值:%ANT HOME%\bin; PATH%

4 我们推荐你把JDK所在的目录指定为JAVA_HOME 环境变量:

变量名:JAVA HOME

变量值:C:\jdk1.6.0_14

这个值和其他值一样,可能会根据你操作系统上安装JDK的位置的不同而不同。

5 为了可以执行Ant的JUnit任务,要将junit.jar文件复制到%ANT_HOME% \lib目录中。Ant将会为了你的构建把JAR文件添加到类路径中。在后面的章节中我们将会介绍其他的选项。

在 UNIX (Bash)操作系统上安装Ant

要在 UNIX(或Linux)操作系统上安装Ant,可以按照以步骤进行操作:

1 将Ant的 TAR分发包解压缩到一个本地目录下(例如/opt/ant )。在这个目录中,解压缩操作会为 Ant分发包创建一个子目录,例如/opt/ant/apache-ant-1.7.1o

2 在你的环境变量中增加一个 ANT_HOME 变量,这个变量的值就是这个目录,例如:

export ANT HOME=/opt /ant /apache-ant-1.8.0

3 将ANT_HOME/bin目录添加到操作系统的PATH环境变量中:

export PATH=S(PATH]:S(ANT HOME]/bin

4 我们推荐你把 JDK所在的目录指定为JAVA_HOME环境变量:

export JAVA HOME=/usr/java/jdk1.6.0_14/

5 为了可以执行Ant的 JUnit任务,要将junit.jar文件复制到${ANT_HOME}/lib目录中。Ant将会为了你的构建把JAR文件添加到类路径中。在后面的章节中我们将会介绍其他的选项。

相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~