• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

自动进行团队构建和单元测试过程

发布: 2008-4-03 17:48 | 作者: Andrew Glover | 来源: IBM | 查看: 263次 | 进入软件测试论坛讨论

领测软件测试网


安装 CruiseControl

下一个工作是下载 CruiseControl(请参阅 参考资料)并把它安装在 pkg 目录中:

[cruise@fcvm pkg]$ wget -q http://heanet.dl.sourceforge.net/\
sourceforge/cruisecontrol/cruisecontrol-2.2.1.zip
[cruise@fcvm pkg]$ unzip cruisecontrol-2.2.1.zip
Archive:  cruisecontrol-2.2.1.zip
   creating: cruisecontrol-2.2.1/
   creating: cruisecontrol-2.2.1/contrib/
[...]
  inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/testdeta
ils.xsl
  inflating: cruisecontrol-2.2.1/reporting/jsp/webcontent/xsl/unittest
s.xsl
[cruise@fcvm pkg]$ rm cruisecontrol-2.2.1.zip
[cruise@fcvm pkg]$ 

不需要构建 CruiseControl,因为发行包中包含一个预先构建好的 JAR 文件。

现在可以让第一个自动构建工作了。这里将采用 XStream 项目的源树作为初始示例(请参阅 参考资料)。稍后 您将会学习到如何添加来自本地和远程源代码仓库的更多项目。CruiseControl 从自己的启动目录中叫作 config.xml 的文件中读取要构建的项目的信息。在本文的安装中,这个目录是 /home/cruise。清单 1 显示了一个简单的 config.xml 文件的内容,可以从它开始。要创建它,只要把清单 1 中的文本拷贝到一个新文件就可以了:


清单 1. 构建 XStream 的简单的 CruiseControl config.xml 文件
				
<?xml version="1.0"?>
<cruisecontrol>
  <project name="xstream" buildafterfailed="false">
    <listeners>
      <currentbuildstatuslistener
           file="log/build/xstream/status.txt"/>
    </listeners>
    <modificationset>
      <filesystem folder="/home/cruise/force-build/xstream"/>
      <svn LocalWorkingCopy="src/xstream"/>
    </modificationset>
    <schedule interval="3600">
      <ant antscript="/usr/bin/ant"
           uselogger="true"
           antworkingdir="src/xstream"
           multiple="1"
           target="library"/>
      <ant antscript="/usr/bin/ant"
           uselogger="true"
           antworkingdir="src/xstream"
           multiple="5"
           target="clean library"/>
    </schedule>
    <log dir="log/build/xstream"/>
    <dateformat format="dd/MM/yyyy HH:mm:ss"/>
  </project>
</cruisecontrol>

配置文件向 CruiseControl 提供了关于要构建的每个项目的三部分主要信息:

  • 如何构建项目,在 <schedule> 元素中指定:
    • 每 3,600 秒(即每小时)构建项目一次。
    • 用 Ant 进行构建过程。
    • 每进行到第 5 次构建时,清理构建制品(类文件以及前面构建中的类似内容)的源树。
  • 如何检测什么时候 应当 构建项目,在 <modificationset> 元素中指定:
    • 用 Subversion(svn)检查源树的本地工作拷贝是否过期。(如果源代码没有变化,就不需要构建。)
    • 检测强制构建目录中叫作 xstream 的文件的时间戳。这样即使源树没有变化,也可以手动强制进行下一次安排的构建。(在这篇文章后面,我将多次谈到可能需要这种手工覆盖。)
  • 对构建的结果要做什么,在 <listeners><log> 元素中指定:
    • 把构建过程的输出放在 log/build/xstream 目录中加了时间戳的文件中。
    • 把构建的整体状态写入这个目录中的一个文件。

现在需要从 XStream 项目的 Subversion 仓库中签出 XStream 源树。为了保持一致,请把所有源树签出为 /home/cruise/src 的子目录,并把 XStream 源树放在 src/xstream 中,就像 config.xml 文件所指定的那样:

[cruise@fcvm pkg]$ cd
[cruise@fcvm ~]$ mkdir src
[cruise@fcvm ~]$ cd src
[cruise@fcvm src]$ svn co https://svn.codehaus.org/\
xstream/trunk/xstream
A    xstream/LICENSE.txt
A    xstream/continuous-integration.xml
[...]
A    xstream/build.xml
 U   xstream
Checked out revision 614.
[cruise@fcvm src]$ 

然后,设置强制构建子目录:

[cruise@fcvm src]$ cd ..
[cruise@fcvm ~]$ mkdir force-build
[cruise@fcvm ~]$ touch force-build/xstream
[cruise@fcvm ~]$ 

最后这一步是必需的,因为如果 config.xml 文件的 <filesystem> 元素中指定的文件不存在,CruiseControl 会拒绝启动。

现在构建工作可能没有正常工作,也有可能遗漏了一些依赖项。所以这个时候,应当做一些手动检查,确保能够成功构建 XStream 源树:

构建 XStream 有问题?
有可能发现 XStream 构建失败,报告 org.w3c.dom.TypeInfoNoClassDefFoundError 错误。实际上,构建几乎就成功了,但是 XStream 的 Ant 构建脚本用 <junitreport> 任务生成 JUnit 测试结果的 HTML 报告。这个工作使用 XSLT 转换,所以触发了前面我在 初始配置 一节中提到过的 xerces-j2 包中的 bug
[cruise@fcvm ~]$ cd src/xstream
[cruise@fcvm xstream]$ ant library
Buildfile: build.xml
compile:
    [mkdir] Created dir: /home/cruise/src/xstream/build/java
     [echo] Java version used for compile: 1.4.2_08
    [javac] Compiling 150 source files to /home/cruise/src/xstream/bui
ld/java
[...]
library:
BUILD SUCCESSFUL
Total time: 1 minute 44 seconds
[cruise@fcvm xstream]$ 

而且,在添加新项目时,需要找到用来构建源和清理其中制品的目标的名称。必须把这个信息放在 config.xml 文件中。

现在应当做好准备,可以让 CruiseControl 自动执行这个构建了。只要启动 CruiseControl,然后坐下来等待就可以了:

[cruise@fcvm xstream]$ cd
[cruise@fcvm ~]$ java -jar \
pkg/cruisecontrol-2.2.1/main/dist/cruisecontrol.jar
[cc]Aug-24 20:09:31 Main          - CruiseControl Version 2.2.1
[cc]Aug-24 20:09:32 trolController- projectName = [xstream]
[cc]Aug-24 20:09:32 trolController- No previously serialized project f
ound: /home/cruise/xstream
[cc]Aug-24 20:09:32 Project       - Project xstream:  reading settings
 from config file [/home/cruise/config.xml]
[cc]Aug-24 20:09:32 BuildQueue    - BuildQueue started
[cc]Aug-24 20:09:32 Project       - Project xstream starting
[cc]Aug-24 20:09:32 Project       - Project xstream:  idle
[cc]Aug-24 20:09:32 Project       - Project xstream started
[cc]Aug-24 20:09:32 Project       - Project xstream:  next build in 1 
hours
[cc]Aug-24 20:09:32 Project       - Project xstream:  waiting for next
 time to build
[cc]Aug-24 21:09:33 Project       - Project xstream:  in build queue
[cc]Aug-24 21:09:33 BuildQueue    - now adding to the thread queue: xs
tream
[cc]Aug-24 21:09:33 Project       - Project xstream:  reading settings
 from config file [/home/cruise/config.xml]
[cc]Aug-24 21:09:33 Project       - Project xstream:  bootstrapping
[cc]Aug-24 21:09:33 Project       - Project xstream:  checking for mod
ifications
[cc]Aug-24 21:09:59 Project       - Project xstream:  No modifications
 found, build not necessary.
[cc]Aug-24 21:09:59 Project       - Project xstream:  Building anyway,
 since build was explicitly forced.
[cc]Aug-24 21:09:59 Project       - Project xstream:  now building
Buildfile: build.xml
[cc]Aug-24 21:11:29 Project       - Project xstream:  merging accumula
ted log files
[cc]Aug-24 21:11:30 Project       - Project xstream:  build successful
[cc]Aug-24 21:11:30 Project       - Project xstream:  publishing build
 results
[cc]Aug-24 21:11:30 Project       - Project xstream:  idle
[cc]Aug-24 21:11:30 Project       - Project xstream:  next build in 1 
hours
[cc]Aug-24 21:11:30 Project       - Project xstream:  waiting for next
 time to build
[stop CruiseControl using Ctrl-C]
[cruise@fcvm ~]$ 

文章来源于领测软件测试网 https://www.ltesting.net/

52/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网