测试开发

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

9.7 创建HTML报告

当你正在运行交互式测试时,图9.1中的控制台输出可能是可以接受的,但是如果你想检查以后的结果,那么你就不能使用这个输出。计划任务(cron job)工作或者持续集成服务器(参见本书的第11章)可以每天自动地运行测试,这样控制台输出就可能无法使用了。

junit 任务可以生成XML 文件,详细描述不同测试的运行结果。另一个可选的Ant任务junitreport,可以使用一个 XSL 样式表将这个XML 文件转换成HTML格式。转换的结果是你可以使用任何 Web浏览器打开这份报告。图9.3显示了example 项目的一个报告页面。

image.png

图9.3 Ant任务生成的HTML报告

代码9.6显示了为了生成这份报告需要对构建文件所进行的修改(粗体部分)。

image.png

image.png

首先,我们为报告将要生成的位置定义了一个属性①,然后创建了这个目录②。我们修改了junit任务,使它输出XML格式的测试结果3,而不是纯文本格式。Junitreport使用XSL将XML格式的测试结果转换为HTML 报告。我们要修改junit任务,以便在S |target.report.dir}目录中创建一个XML 报告文件④,然后再创建一个新的report目标来生成HTML报告⑤。

我们通过创建将要生成HTML 报告的目录来开始创建report目标6。我们调用了junitreport任务来创建这个报告7。junitreport任务会扫描被指定为Ant文件集(fileset)的一组XML 测试结果⑧,并且在我们指定的目录中生成HTML 报告9。

下一步要学习的是如何批处理测试。

JUnit报告的未来

Ant的junit任务产生了XML输出,包含了执行JUnit测试的详细结果。这个任务并不是能够产生XML 格式文件的唯一工具,Maven的 Surefire 插件也可以做到这一点。除了junitreport,其他几个工具也可以读取这种格式的内容,如maven-surefire-reports和不同的持续集成服务器等。

到Ant 的1.7.1版本为止,生成的 HTML报告都不会列出跳过的测试,因为Ant不会使用JUnit 4的功能。值得注意的是,在早期版本的JUnit中,不存在针对跳过测试的特定状态。所以,我们应该期待针对JUnit报告的XML Schema进一步发展,目前这个话题正在Apache的Ant 维基'上展开讨论。

9.8 批处理测试

我们当前的构建文件通过test目标调用了junit任务,从而调用特定的测试用例。虽然这对于一小组测试类来说是可行的,但是对于比较大的类集而言,它就可能变得难以应付了。补救这种情况的一个办法是,将测试集中在一个测试集(test suite)中,然后再从Ant中调用这个测试集。

或者,你也可以指示Ant通过使用通配符根据类名称来查找相关的测试,从而批处理多个测试。batchtest元素使用带有通配符的文件集来查找测试类,如代码9.7所示(相对于代码9.4的修改之处已用粗体表示)。

image.png

tests属性定义了①在后面代码中被batchtest元素②所使用到的类的命名模式。定义这个属性可以让我们在命令行中重写它或者通过另一个属性定义。例如,这使得我们可以运行一个单独的测试用例或者提供一个值来运行一小组测试。当保留默认值来执行整套测试时,这项技术就为我们提供了一种针对任何指定的、正在使用的类运行测试的快捷方式。以下示例仅仅执行了TestDefaultcontroller测试用例:

ant -Dtests=TestDefaultcontroller test

batchtest元素②使得test目标和我们的构建更加灵活。而添加一个 clean目标来删除所有构建产生的文件始终是一个很好的做法。这样做可以让我们从最初的构建原则(在本例中,是Java源文件构建原则)开始进行构建,消除了多余类的潜在影响。通常情况下,dist目标(为了分发)生成了项目的所有分发文件并依赖于clean目标。

你应该考虑一下测试类的名称,这样你就能使用一种合理的模式来匹配它们。根据开发语言的不同,你可以选择使用Test或TestCase 作为类名称的前缀或后缀,例如DatabaseAccessorTest。

自动单元测试是灵丹妙药吗?

简言之,不是。虽然自动单元测试可以发现大量的错误,但是我们仍然需要通过手动测试来找到尽可能多的错误。一般而言,自动回归测试能够捕获所有被发现的错误中的15%~30%,而手动测试可以发现其余的70%~85%错误。

你对此确信吗?

有些测试优先的狂热爱好者现在报告了数字非常低的错误统计,大约是每个月有一至两个错误,甚至更少。正式的研究需要来进一步验证这些报告。你的情况肯定会与他们有所不同。

9.9 小结

在本章中,我们引人了Apache 的 Ant,它是构建Java软件的最佳工具之一。我们介绍了Ant构建文件的基本概念并描述了几个关键任务:javac、junit和junitreport。这些任务允许你编译Java代码、运行JUnit测试和创建HTML 测试报告。我们也引入了Apache的 lvy来轻松管理项目的JAR 文件的依赖项。lvy 会为你的构建解析和下载JAR文件的依赖项。

在后面的几章中,我们会继续使用Maven来探讨持续集成范例,Maven是另一个构建软件的常用工具。我们从核心的Maven概念开始入手,并且探索了两个重要的插件:maven-surefire和 maven-surefirereport。我们还研究了与Ivy相比Maven是如何处理依赖管理的。

相关内容

文章评论

表情

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