让编译和测试过程自动化

极端编程(XP)主要原则的其中之一是程序员必须执行定期的单元测试,还必须不断 的将变化集成到类似产品的环境中去。此外,XP 建议尽可能让这个过程自动化。毕竟, 如果开发者像生产代码一样热切的创建测试案例,过程会相对的轻松些。

如果单元测试做的好的话,您应该会对每一段代码(特别是由个别类标明的)都能正 常运行而满意。执行持续的或者不稳定的编译让您明白当代码集成到生产环境时它是如何 生效的。在开发周期中集成单元测试和定期自动的编译,向您和您的客户保证了代码发布 时是可靠的。

在本文中,我将为自动的编译和测试过程采取实用的方法。使用 Ant 1.3 和 JUnit 测试框架,将像您展示如何自动化一个过程,这个过程捕获每个测试套件运行的相关信息 、生成有吸引力的报告并用电子邮件发送这个报告。虽然这些性能有许多隐含在 Ant 中 ,但我还是修改了许多核心任务来更好地满足要求。这些修改是本文的中心,它们将全部 结合到 Ant 的下一个发行版中。

为什么使用 Ant 和 JUnit?

Ant 1.3 是编译工具中的实际标准。由于用 Java 语言编写,Ant 是开放源代码的, 可以在多种平台上运行,并为编译过程带来了很大的灵活性。JUnit 测试框架也是开放源 代码的,它被广泛使用,并与 Ant 的编译过程集成(想学更多关于 Ant 和 JUnit 的知 识,请参阅 参考资料)。

Ant 1.3 加上可选的 <junit> 以及 <junitreport> 任务,不经修改就 可以启动基本编译和测试的自动过程。这一过程如下:

运行 JUnit 测试实用程序

捕获测试结果

创建吸引人的 HTML 总结报告

一旦捕获结果,就可以使用 XML 格式化器将每个测试套件运行的故障和错误数,连同 软件包和类名还有测试套件的执行时间一起引入。对于每个测试套件,都有以下信息被捕 获:

测试案例的名称

执行的持续时间

故障或错误的类型(如果适用)

任何故障或错误的详细信息

这个构想中少了些什么

虽然功能上很完美,但上面描述的自动化既不理想也不完整。通过修改 JUnit 任务中 的几个,我们可以创建按如下步骤运行的自动过程。

执行 JUnit 测试

将结果记录到 XML 文件或其它格式的文件

将结果转化为基于 XSL 格式的测试报告

将这个报告转化为 HTML 格式

用电子邮件发送报告

请给我更多数据

除了将 Ant 和 JUnit 扩展到能自动进行编译和测试的过程的程度外,我还添加了测 试期间捕获的标准数据。即,我需要知道使用的是什么操作系统、测试的日期/时间、支 持测试运行的 JVM 版本以及 classpath。

为捕获这个信息,我对 Ant 的 JUnit 相关类中的四个类: JUnitTask 、 JUnitTest 、 JUnitTestRunner 以及 XMLJUnitResultFormatter 做了简单修改。您会在附带的源文 件中发现这些变化。

作为附带的优点,当扩展捕获的数据时,最终捕获的不仅是在测试套件运行时特定状 态的信息,而且还包括了整个 Ant 的操作属性集。其中包含系统属性和内部 Ant 属性( 例如用户定义的属性)。

时间: 2024-05-21 11:46:05

让编译和测试过程自动化的相关文章

如何搭建自动化、跨浏览器的 JavaScript 单元测试

本文讲的是如何搭建自动化.跨浏览器的 JavaScript 单元测试, 我们都知道在各个不同的浏览器环境里测试代码是很重要的,并且在大多数时候,我们这些 Web 开发者在这一点上还是做的不错的 -- 至少在第一次发布项目的时候是这样. 然而我们每次更改代码之后的测试工作,却做的不尽人意. 我深切地知道我本人就是这样的 -- 我早就把"学习怎样搭建自动化.跨浏览器的 JavaScript 单元测试"写在 To-do List 上了,但每当我坐下来想要真正的去解决这个问题的时候,我却不得不

Android应用程序的编译流程及使用Ant编译项目的攻略_Android

Android 工程构建的持续集成,需要搭建一套编译和打包自动化流程,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个比较深入的理解,例如知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么,等等. 首先,假定你的系统(Windows.Linux.Mac OS都行,本文默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK. 我们重点关心的是:     (1)这个过程的输入是什么?

实施自动化功能测试的解决方案

摘要 当今的企业需要掌控其关键业务应用的所有功能测试,以确保所有业务流程工作符合预期.通过实施自动化的功能测试,企业可以极大提高测试速度和精度,从挼间项目中得到更高的投资回报并且显著地降低风险. 本文简要描述了自动化功能测试的优势和挑战,帮助企业考虑实施最佳测试自动化的方法. 1.介绍 毫无疑问,严格的功能测试是成功开发应用的关键.开发人员,测试小组和管理人员所面临的挑战是,如何加速测试流程和提高测试的精确性和完备性,同时还不能增加已然很紧张的预算. 通过将功能测试的关键环节自动化,可以满足有挑

Android应用程序的编译流程及使用Ant编译项目的攻略

Android 工程构建的持续集成,需要搭建一套编译和打包自动化流程,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个比较深入的理解,例如知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么,等等. 首先,假定你的系统(Windows.Linux.Mac OS都行,本文默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK. 我们重点关心的是:     (1)这个过程的输入是什么?

常用软件测试工具的分析

工具名称:WinRunner 来源: Mercury公司 类型:功能性测试 费用:收费昂贵 功能概要: Winrunner 最主要的功能是自动重复执行某一固定的测试过程,它以脚本的形式记录下手工测试的一系列操作,在环境相同的情况下重放,检查其在相同的环境中有无异常的现象或与实际结果不符的地方.可以减少由于人为因素造成结果错误,同时也可以节省测试人员大量测试时间和精力来做别的事情.功能模块主要包括:GUI map.检查点.TSL 脚本编程.批量测试.数据驱动等几部分 工具名称: LoadRunne

DotNet 资源大全

原文:DotNet 资源大全 转自:http://blog.jobbole.com/96676/ API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台. ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备. ServiceStack :架构缜密.速度飞快.令人愉悦的 web 服务. Nelibur:Nelibur 是一个使用纯 WCF 构建的基于消息

DotNet 资源大全中文版

原文:DotNet 资源大全中文版 转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大.这

面向 Java 开发人员的 Ajax: Google Web Toolkit 入门

简介: Ajax 被用于创建更加动态和交互性更好的 Web 应用程序.Google Web Toolkit (简称GWT) 是 Google 推出的 Ajax 应用开发包,GWT 支持开发者使用Java 语言开发 Ajax 应用.本文中作者将介绍如何使用 GWT 开发 Ajax 应用的基本方法和步骤. ## Ajax简介 ## Ajax是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写,由XHTML.CSS.JavaScript.XMLHttpReq

Java开源软件测试工具大汇总

一.JUnit JUnit是由Erich Gamma 和Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能.Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了. http://www.junit.org/ 二.Cactus Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端J