测试开发

《JUnit实战》第9章 从 Ant中运行JUnit 测试(续2)

9.5 让Ant来执行任务

现在你已经组装好了构建文件,那么你就能够通过改变当前目录并输人ant,从命令行中运行它。图9.1显示了Ant控制台的输出信息。

image.png

图9.1 从命令行中运行构建文件

我们现在能够同时构建和测试项目。如果有任何测试失败,则haltonfailure和

haltonerror设置将会提供停止构建,并将问题反馈给我们。

运行junit可选的任务

junit任务是捆绑在 Ant 的 ant-junit.jar 文件中的一个可选组件,它应该已经存在于你的$(ANT_HOME/ib目录中。Ant并没有捆绑一份JUnit 的复制,所以你必须确保 junit.jar位于你的类路径中或者在${ANT_HOME/lib目录中。ant-junit.jar 文件包含了任务本身。关于安装Ant的更多内容,可以参考9.3小节“介绍和安装Ant"。如果你在运行本章中的Ant构建文件时遇到了任何问题,则应确认 ant-junit.jar 文件是否在SIANT_HOMEY/ib 文件夹中,并且 junit.jar要么在你的类路径中,要么也在${ANT_HOMEY/Iib 目录中。

到现在为止,我们已经了解了使用Ant执行测试的一种方式。现在我们来看一下构建过程的另一个方面:依赖管理(dependency management)。为了对Ant项目的依赖项进行自动化管理,我们将引入和使用 Apache的Ivy'项目。

9.6 使用Ivy进行依赖管理

当你的项目比较小型时,要处理代码所依赖的JAR文件可能是非常容易的。在我们前面的示例中,我们仅依赖于一个JAR文件,即 junit.jar。对于较大型的项目,你的构建最后可能会依赖于几十个库。对于新加入的开发人员或项目下游的开发人员来说,这些依赖项可能就是一大难题了。必须知道JAR的依赖项是什么并且知道在Web上什么地方可以获取这些信息,不应该成为使用项目的开发人员的一大障碍。

Apache的 Maven项目首先为 Java项目引人了依赖管理(参见下一章中关于Maven构建工具的介绍)。Maven的依赖管理基于一个或多个(内网、外网或本地)仓库的概念,这些仓库包含了来自整个开源世界中的大量项目的 JAR。开发人员在·配置文件中为一个项目列出了依赖项,并且允许 Maven将正确的文件下载到计算机上的本地仓库的缓存中。然后,你能够根据这些JAR在本地仓库中的位置,把它们添加到类路径中。

Apache的lvy是一款流行的开源依赖管理工具(用来记录、跟踪、解决和报告依赖项),注重灵活性和简易性。虽然 Ivy作为一个独立的工具是可用的,但它尤其能与Ant很好地配合使用,Ant 提供了一些强大的 Ant 任务,涉及从依赖项解析(dependencyresolution)到报告和发布等多个方面。关于lvy更深入的内容并不在本书的讨论范围之内,但是我们可以使用Ivy的依赖管理功能重做我们的构建文件。

lvy的安装是非常简单的;首先从站点下载 ZIP文件,然后将它解压缩,并且将ivy-vvv.jar(其中的wv表示 Ivy 的版本)复制到${ANT_HOME}/lib目录中。

lvy的工作方式与 Maven相同,它甚至可以使用Maven的仓库来解析和下载依赖项。你在一个默认命名为 ivy.xml的文件中为你的项目指定了依赖项。Ivy 将会把所有列在ivy.xml文件中的依赖项下载到一个本地缓存目录中。代码9.4用粗体突出显示了构建文件中的变化。

image.png

image.png

我们首先声明了ivy命名空间1和调用了Ant的 lvy任务来获取列在来自公共仓库的ivy.xml文件中的依赖项②。在我们使用lvy取得junit.jar之后,归档会保存在项目的lib目录中。接下来,我们定义了junit.jar属性,使其指向我们刚刚下载的JAR 文件③。我们分别将JAR添加到javac任务的类路径中④和junit任务的类路径中⑤。因为我们不再需要位于S{ANT_HOME}/Ilib目录中的junit.jar了,所以我们可以删除它。ivy.xml文件定义了项目的依赖项,如代码9.5所示。

image.png

首先,ivy-module根标签①定义了我们想要使用的lvy 版本(在这个用例中采用的版本是2.0)。然后,info标签②为我们将要定义的依赖项定义了组织和模块名称。最后,嵌套的dependencies元素③是我们指定依赖项的地方。这里我们的模块只有一个依赖项被列出:JUnit。

再次调用Ant,显示的结果与junit.jar位于S{ANT_HOME /lib目录中时相同,如图9.2所示。但是这次,我们会看到Ivy调用并解析了项目的依赖项。

image.png

图9.2 Ant与 lvy配合使用的输出结果

在下一节中,我们将尝试另一种形式的报告。

相关内容

文章评论

表情

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