如果我要新建一个java的项目,那么有两个类库是必备的,一个是junit,另一个是Guava。选择junit,因为我喜欢TDD,喜欢自动化测试。而是用Guava,是因为我喜欢简洁的API。Guava提供了很多的实用工具函数来弥补java标准库的不足,另外Guava还引入了函数式编程的概念,在一定程度上缓解了java在JDK1.8之前没有lambda的缺陷,使使用java书写简洁易读的函数式风格的代码成为可能。

Read More

在做web项目的自动化端到端测试时主要使用的是Selenium WebDriver来驱动浏览器。Selenium WebDriver的优点是支持的语言多,支持的浏览器多。主流的浏览器Chrome、Firefox、IE等都支持,手机上的浏览器Android、IPhone等也支持,甚至还支持PhantomJS(由于PhantomJS跑测试时并不需要渲染元素,所以执行速度快)。

Read More

如今代码静态检查越来越重要,已经成为构建高质量软件的不可或缺的一个验证步骤。如果你使用的是java语言,那么CheckStyle则是一个利器。
CheckStyle能够帮助程序员检查代码是否符合制定的规范。通过将CheckStyle的检查引入到项目构建中,可以强制让项目中的所有的开发者遵循制定规范,而不是仅仅停留在纸面上。如果发现代码违反了标准,比如类名未以大写开头、单个方法超过了指定行数、甚至单个方法抛出了3个以上的异常等。这些检查由于是基于源码的,所以不需要编译,执行速度快。

Read More

本来这篇文章的名称为”ThoughtWorks的培训体系”。但是培训这个词总给人一种正襟危坐的感觉,而在ThoughtWorks中的培训则是非常轻松自在的。而且培训有种老手教新手的味道,而在ThoughtWorks不管资历高低,只要你敢秀,都随时欢迎。所以我将培训改为了知识分享。”Knowledge sharing”可以说是ThoughtWorks的标志性文化之一。在ThoughtWorks大家庭,大家都很乐于把自己的所学、所想通过各种方式分享出来。正因为ThoughtWorks建立了立体化、全方位的知识分享体系,每一个新加入ThoughtWorks大家提的人都能得到快速的成长,而经验丰富的老员工也能不断的突破自身。这个体系有力的保证了公司员工的技术水平。下面我简略的讲解下这个体系。希望大家都能有所借鉴。

Read More

自从接触并践行了敏捷的一些实践之后,便深深的喜欢上了敏捷。尤其是测试自动化和持续集成这两个实践,可以显著的提高软件的质量和集成效率,实时检测项目健康度,使团队成员对项目保持充足的信心。

但是对于个人项目而言,虽然测试自动化好实现,但是要实现持续集成还是稍有难度。因为持续集成需要搭建一个集成服务器,并建立某种反馈机制。而大多数人来说并没有自己的独立服务器,并且配置也极为繁琐。

Read More

原书标题为《Practices of An Agile Developer》。中文名为《高效程序员的45个习惯-敏捷开发修炼之道》。敏捷这个词已经烂大街了,关于敏捷的书籍俯拾皆是。很多人是敏捷的狂热粉丝,而另一些人却讨厌敏捷,认为只是个噱头。我觉得很可能的原因之一是敏捷这个名字没起好。它的原名为“轻量型软件开发过程”(”lightweight process”),但后来阴差阳错成了agile(敏捷)。

Read More

我目前工作的一个项目后端使用java和spring建立了一个restful service,前端使用AngularJS来渲染页面,提供用户接口。在前端的AngularJS项目中,我们使用Jasmine来写单元测试,使用AngularJS自带的Angular_scenario来写端到端测试。运行这些测试则使用的是Karma

虽然使用Karma在命令行下可以很方便的运行所有的测试,但是我们想将这些集成到gradle的构建脚本中,从而将AngularJS的所有测试加入到CI的构建中。同时为了保证运行测试的效率,我们决定使用PhantomJS作为运行测试的浏览器环境。

Read More