持续集成实践添加了一个新的方向是代码编写规则工具,随着时间推移帮助开发者显示和分析代码规则,2008年在持续集成控制方面也有不少进展,Bamboo,Atlassian的一个商业持续集成工具,为这个领域注入了大量新功能,包括图形显示随时间推移的build过程和独立测试过程。
引用:Gant和Gradle取代了Ant
传统的Java build脚本工具,Ant,在2008年似乎有点过时。相反,新的工具 Gant 在迅速发展中。Gant是也是一个build脚本工具,让你能够使用Groovy而不是XML来build Ant任务。Gant是前途光明的Grails web框架的底层build工具,因此也在2008年获得关注。如果你不能离开Ant在build脚本方面的灵活性,又无法忍受累赘的XML语法,Gant值得一看。
同样的,Gradle也是一个基于Groovy的build工具,于2008年初次露面。Gradle试图使用Groovy语法来提供Ant的灵活性,而且它还让你获得许多类似Maven的功能比如传递依赖管理和约定大于配置。
CI持续集成进入生命周期管理SDLC
2008年java开发领域在持续集成工具方面进步巨大。持续集成工具被视为生命周期管理工具的关键部分。一个好的CI工具让你能够持续跟踪整个项目,不仅仅是测试总数,最新的测试失败,还包括你的整个测试是如何进行的。这种数据对于开发进程调优非常有好处。
引用:Hudson受到开发者宠爱
在过去的一年中,Hudson 从一个开发中的产品变成市场中流行的开源CI项目。虽然Hudson的魅力有时候来自于极少出错,Hudson的直观的用户界面和有用的报表功能让它成为一个强大的小CI持续集成工具。
Hudson也领导了Maven集成市场,成为目前唯一的能够基于Maven依赖图正确决定哪个项目需要重新build的工具。当你在管理多模块Maven项目时,这个功能能够让你节约大量的时间。Hudson也提供丰富的插件库,允许你添加其他功能,比如与JIRA或者Trac集成,或者自动部署到Tomcat服务器上。
[1] [2] 持续集成工具和代码质量工具集成
一些持续集成工具能够集成优秀的代码质量工具,比如Checkstyle,PMD,FindBugs,Cobertura和Emma。
这些工具提供有用信息,监控你的项目是否健康,比如代码标准,不良代码,以及代码覆盖等。开源代码质量工具相对比较稳定,今年Checkstyle发布了新的功能,持续发展的FindBugs控制了数据库,在商业市场,Clover发布了多个创新的功能,包括per-test每测试覆盖,让你能够不仅看到你的应用代码在测试中执行有多频繁,而且能够看到哪些测试执行了代码。
另外一个方面,2008年持续集成工具从独占的专家领域变得更加开放民主,让开发团队更多的参与进来。比如在Hudson中,一个插件让开发者"申明"一个失败的build,来告诉团队其他开发者他正在修改这个地方。在Bamboo中,你能对build添加注释,或者通过一个失败的build信息启动一个面向开发者的即时通讯讨论。Hudson甚至添加了一个CI游戏插件让你开发团队成员进行提升代码质量的比赛。
Subversion 1.5发布
在版本控制存储方面,2008年最大的新闻就是等待了很久的Subversion 1.5发布。它带来了一些强大的新功能,包括合并跟踪和存储复制支持改进。这个新的合并功能让多个不同的分支能够合并修改。
测试工具
基于Java的测试工具领域2008年发生了很多事情,尤其是behavior-driven development(BDD)行为驱动开发框架引起了大家的兴趣,以及web测试工具发展迈进了一大步。
BDD是一个在test-driven development(TDD)测试驱动开发技术上发展起来的敏捷开发领域的新的技术。JBehave在2008年9月发布,Jbehave是一个java BDD框架,你能够使用JUnit测试案例写BDD脚本,通过特殊的annotations,比如@Given, @When, 和@Then。你也能写相应的文本脚本,让你能够在实现解决方案之前描述你的行为流程。下面是例子:
Java代码
Simple JBehave test case
public class AccountDepositSteps extends Steps {
Account account = null;
BigDecimal initialDeposit = new BigDecimal("100.00");
@Given("I have created a new account")
public void createAccount() {
account = new Account();
}
@When("I deposit $100 into the account")
public void deposit() {
account.makeDeposit(initialDeposit);
}
@Then("My account should have a balance of $100")
public void checkBalance() {
ensureThat(account.getBalance(), equalTo(initialDeposit));
}
}
另外一个基于Groovy的BDD框架:easyb,提供了Groovy的强大功能,能够结构性的在java测试领域实现BDD。Easyb使用Groovy域特定语言DSL能够跟随BDD脚本模型。Groovy能让测试具有更大的表达性,尤其当你熟悉Groovy惯用方法,比如文件集成,激活和闭包。上面的例子用easyb重写如下:
Java代码
scenario "Make initial deposit onto a new account", {
given "I have created a new account",{
account = new Account()
}
when "I deposit $100 into the account", {
initialAmount = 100
account.makeDeposit(initialAmount)
}
then "the balance should be equal to the amount deposited", {
account.balance.shouldBe initialAmount
}
and "My account should have a balance of $100", {
account.balance.shouldBeEqualTo initialAmount
}
}
Web测试工具进化
这里有很多测试工具不仅仅是单元测试,2008年Web测试工具进展迅速。这个领域尤其值得注意的工具有两个:Selenium 和Canoo WebTest.
Selenium 是一个原始测试工具,在浏览器中运行你的web测试。在2008年,Selenium 1.0 beta发布了,提供更好的稳定性和新的功能。通过录制Selenium测试脚本,你能使用Selenium做功能测试和回归测试,也能通过Java甚至Groovy写Selenium测试案例来支持TDD测试驱动开发。2008年也见证了Selenium Grid的出现,一个非常有前途的工具,帮助你分布你的测试到多个不同的服务器,并且平行运行测试或者在特定平台浏览器上运行。
Canoo WebTest 在2008年也非常活跃。这个强大的web测试框架非常适合TDD或者BDD实现。使用Canoo WebTest,你能够用XML或者Groovy为你的Web应用写测试案例。Canoo WebTest运行在Web应用上,提供清晰,详细的HTML测试报告。Grails使用Canoo WebTest用于自动生成功能测试。Canoo WebTest并不像Selenium功能那么强大,对JavaScript的支持没有Selenium那么好。
IDEs
在IDE方面,2008年见证了 Eclipse 3.4 Ganymede 和NetBeans 6.5的发布,两者都带来了很多新功能。Eclipse 3.4 改进了java开发环境,包括:更好上下文帮助功能,更好的快速修复,大量提升可用性。一个很好的被重构的功能是Extract Class option,让你能够从class中获得一组属性和函数,创建一个新的class封装这些字段和函数。Eclipse 3.4的编译速度变快,能从多核进程中获得优势,把计算分布到不同的芯片上运行。Eclipse 3.4支持外部Subversion,完全支持Subversion插件。
引用:Groovy Grails和IDEs
Groovy和Grails 2008年大量侵入java社区,Groovy是一个动态脚本语言,Grails是一个强大的基于Groovy的类似Ruby的web框架。2008年Groovy和Grails,以及Scala和Clojure发展很快,但是对于它们的IDE支持并不好,主要是因为它们是动态语言,比如很难提供很好的代码完成功能,因为动态语言缺乏类型。目前支持动态语言最好的是IntelliJ,其次是NetBeans,Eclipse仍需努力。可以预见到,2009年对于动态语言的支持会继续发展。
我最喜欢的Eclipse 3.4的功能是 Mylyn 3.0,Mylyn 是一个任务管理工具,Mylyn管理构成了一个开发者工作日的所有任务,例如我们修复的bug或者我们增加的特征,都被无缝的集成到IDE的界面中了。IDE集成提供了例如代码补全,变更管理和离线编辑等功能。
NetBeans 6.5
随着NetBeans 6.5的发布,NetBeans成为最舒服的开发环境之一。和以往一样,它提供了比Eclipse更流畅的用户使用体验,虽然和Eclipse相比缺少了一些插件。对Maven用户一个好消息是:NetBeans 6.5对Maven更加友好。虽然没有Eclipse的m2eclipse功能那么丰富,NetBeans Maven插件质量很好,并且视Maven项目为第一类成员对待。
NetBeans 6.5提供优秀的动态语言支持,包括JavaScript,Groovy和Grails,PHP,甚至是Ruby/Rails。你能使用所有这些语言创建项目,NetBeans为它们提供强大的开发环境。
NetBeans也支持JavaFX开发,通过可选插件,能够创建和调试JavaFX应用。
最后NetBeans 6.5为库提供更好的本地支持,比如Spring, Hibernate, 和 JavaServer Faces (JSF),提供比如进入Spring Bean的对话框这样的功能,并且支持在IDE内运行Hibernate 查询语言查询。
总结
2008年在Java开发工具领域出现了许多重要的大事,开发环境提供更丰富的功能,更容易使用,并且满足了日益增加的对动态语言类似Groovy和Ruby的支持。对动态语言兴趣的增加在2008年趋势明显。另外一个整体趋势就是自动build工具在2008年发展很快。Groovy在测试领域成为领头羊,它让开发者更加容易编写更富表达能力和更加强大的测试工具,比如Hudson和Bamboo,将CI持续集成从专家手中释放出来面向一般的开发者。Maven也更加容易使用,拥有丰富的用户界面让Maven更加能够被理解。同时Subversion也提供新的自动脚本功能。
上一页 [1] [2]