自动进行团队构建和单元测试过程
http://tech.ddvip.com 2008年09月09日 社区交流
内容摘要:极限编程和敏捷方法建议开发过程要包含持续集成和单元测试。支持这些实践的一个实际方法是设置一个自动系统,每次在源代码发生变化时,都自动构建和测试源代码的最新版本。这篇文章将介绍为 Java™ 项目建立基于 Linux™ 的构建服务器时涉及的实际问题。
这篇文章介绍的是 CruiseControl,这是一个开放源码软件,可以用它对有多个开发人员参与的软件项目自动进行构建和单元测试。我将解释为什么自动化构建对于成功的开发团队是至关重要的,并一步步介绍运行 CruiseControl 的持续集成系统的配置、安装和维护。
为什么要自动进行构建?
目前的一般实践是使用版本控制系统,例如 CVS 或 Subversion(请参阅 参考资料)。当有多个开发人员在同一个系统上工作时,这类协调就至关重要了。另一个正在流行起来的实践是编写单元测试,并把它们作为构建过程的一部分来运行。例如,Maven 这个构建工具就把运行 JUnit 单元测试作为正常构建过程的一部分(请参阅 参考资料)。但是采用这些实践仅仅是个开始。它们构成了近几年发展起来的许多轻量和实用软件开发方法的基础。
当有许多开发人员在同一个项目上工作时,重要的就是要确保构版本控制系统中代码的最新版本一直被构建。。这对于拥有封闭开发团队的项目来说是个好的实践;当开发人员周期性地把自己的工作区与主干同步时,一个不进行构建的源树会继续进行开发,直到能修正它为止。对于开放源码项目,保持主干可以工作是至关重要的。潜在的新开发人员可以在任何时候检出代码,但是如果代码不能构建,新开发人员可能就被挡在了做贡献的队伍之外。
极限编程(XP)方法论主张 持续集成。开发人员应当尽可能频繁地把他们的代码集成进主干 —— 典型的是几小时一次,同时还要确保所有单元测试都能通过。其他敏捷方法论也同意这个建议。
要采用持续集成和单元测试,需要团队接受这些方法和实践,但是这通常还不够。目前的实践依赖手工步骤 —— 集成代码、运行测试、在合适的时间检入代码,这样的实践有可能造成错误。让自动系统来构建代码、运行单元测试,可能是更可靠的解决方案。
来源:developerWorks 作者:Mark Wilkinson 责编:豆豆技术应用