迷惘的码农。
分类:
2008-04-07 15:42:20
是一种软件开发实践,团队成员频繁地合并他们的工作,通常每个人至少每天合并,导致每天多次合并。每次合并由一个自动化的构建系统(包括测试)校验,以尽快发觉合并错误。很多团队发现这种方式显著地减少了合并问题,并且允许团队更快地开发内聚的软件。 | ||
--Martin Fowler |
本章提供持续集成的概述,总结技术及其在PHPUnit下的应用。
持续集成要求一个完全自动化和可再生的构建系统,包括测试且每天运行很多次。这允许每个开发者每天合并从而减少合并问题。要达此目的,可通过设置一个每隔一段时间重新校验项目的、运行测试并发布结果,仍然可能需要一个更舒适的解决方案。
这就是像这样的用于持续构建过程的框架出现的原因。它包括但并不限于用于email通知的插件、和多种源代码控制工具。提供了web界面用于察看当前和以前构建(版本)的详细信息。
下面的例子假设CruiseControl已经安装于/usr/local/cruisecontrol
。
cd /usr/local/cruisecontrol
mkdir -p projects/BankAccount/build/logs
cd projects/BankAccount
svn co svn://svn.phpunit.de/phpunit/phpunit/branches/release/3.2/PHPUnit/Samples/BankAccount source
build.xml
。范例 20.1: projects/BankAccount/build.xml
cd /usr/local/cruisecontrol
config.xml
。范例 20.2: config.xml
name="svnbootstrapper"
classname="net.sourceforge.cruisecontrol.bootstrappers.SVNBootstrapper"/>
name="svn"
classname="net.sourceforge.cruisecontrol.sourcecontrols.SVN"/>
anthome="apache-ant-1.7.0"
buildfile="projects/${project.name}/build.xml"/>
file="logs/${project.name}/buildstatus.txt"/>
mailhost="localhost"
buildresultsurl="{project.name}"
skipusers="true"
spamwhilebroken="true"
returnaddress="project@example.com">
./cruisecontrol.sh
。是一个软件项目管理和综合的工具。基于概念项目对象模型(POM),Apache Maven能够从信息的中枢位置管理项目的构建、报告和文档。
PHPUnit的XML日志设备(见)产生的单一XML日志文件在能被Apache Maven的处理以前,需要被分割成单独的XML日志文件,分别对应每个测试套件。该插件用于在构建周期的测试阶段执行应用的单元测试。显示一个实现分割的XSLT样式表。显示一个pom.xml
配置文件的例子。
范例 20.3: pom.xml
xmlns:xsi=""
xsi:schemaLocation="
">
4.0.0
2.0.7
org.apache.ant
ant-trax
1.7.0
net.sf.saxon
saxon
8.7
org.apache.maven.plugins
maven-antrun-plugin
1.2-SNAPSHOT
codecoverage
pre-site
run
location="${project.reporting.outputDirectory}/phpunit/codecoverage" />
location="${project.build.directory}/surefire-reports" />
out="${surefire.reports}/xslt.info"
style="src/test/config/phpunit_to_surefire.xslt"
processor="trax">
org.apache.maven.plugins
maven-surefire-report-plugin
2.4-SNAPSHOT
report-only
范例 20.4: phpunit_to_surefire.xsl
xmlns:xsl=""
xmlns:xs=""
xmlns:fn="">
.