订单系统java代码 java订单与支付模块( 四 )


常见的CI服务器有:
Apache Continuum
Hudson
CruiseControl
Jenkins CI
TeamCity
Travis CI
我09年时使用过TeamCity社区版,足够满足常见需求;目前我使用github托管项目 , 使用Travis CI进行分布式的持续集成,免费,目前看来还是不错的 。
3、travis-ci介绍
我现在开发的ES-JavaEE项目开发脚手架就是使用travis ci进行持续集成;具体参考《Getting started》进行与Github集成 , 其支持的语言:
C
C++
Clojure
Erlang
Go
Groovy
Haskell
Java
JavaScript (with Node.js)
Objective-C
Perl
PHP
Python
Ruby
Scala
支持的数据库:
MySQL
PostgreSQL
MongoDB
CouchDB
Redis
Riak
RabbitMQ
Memcached
Cassandra
Neo4J
ElasticSearch
Kestrel
SQLite3
更多请参考其的介绍 。
如果是Java开发人员,支持的JDK包括:OpenJDK 和 OracleJDK 。如果使用的是OpenJDK,Maven中使用ascii2native插件时,需要如下配置:
Java代码
plugin
groupIdorg.codehaus.mojo/groupId
artifactIdnative2ascii-maven-plugin/artifactId
version1.0-alpha-1/version
executions
execution
phasegenerate-resources/phase
goals
goalnative2ascii/goal
/goals
configuration
encodingUTF-8/encoding
srcsrc/main/messages/src
desttarget/${project.artifactId}/WEB-INF/classes/dest
includesmessages.properties/includes
/configuration
/execution
/executions
!-- native2ascii 使用的tools.jar --
dependencies
dependency
groupIdcom.sun/groupId
artifactIdtools/artifactId
version1.7.0/version
scopesystem/scope
systemPath${java.home}/../lib/tools.jar/systemPath
/dependency
/dependencies
/plugin
如果使用mysql,端口只能是3306 。
如果想开端口测试,这是不允许的 。
如下是我项目中的一个配置.travis.yml , 放到项目的根下即可:
-----------------------------------
language: java语言
env:环境
- DB=mysql使用mysql
jdk:
- openjdkjdk使用openjdk
mysql:
database: es数据库名为es
username: root用户名为root
password :密码为空
encoding: utf8编码为utf8
install:安装时执行的脚本
- mvn install -Dmaven.test.skip=truemvn安装并跳过测试
before_script:script之前执行的测试
- cd web
- mvn db:create创建数据库的mvn命令(此处使用了 maven-db-plugin 插件)
- mvn db:schema创建脚本的mvn命令
- mvn db:data安装数据的mvn命令
- cd ..
script:测试时执行的脚步
- cd common
- mvn test测试common子模块
- cd ..
- cd web
- mvn test -Pit测试web子模块,并指定使用it profile测试(即集成测试的配置,具体参考pom.xml中的profile/it)
notifications:触发
email:测试完成后测试报告发到哪
- zhangkaitao0503@gmail.com
-----------------------------------
持续集成不能修复代码的错误,而是和单元测试一样 , 缩短发现问题带解决问题的时间,这样可以提高开发效率,降低项目风险,提高项目的稳定性 。而且尤其是团队协作时,可以发现其他人的代码是否对自己的代码产生影响 。
到此我们利用单元测试+CI可以加速开发人员的开发速度 。利用好单元测试和CI , 不要纯粹为了单元测试和CI而去做这些事情 。
本文没有介绍TDD,TDD并不会那么美好,我认为我们可以借鉴TDD的一些思想 , 但决不能迷信TDD,有时候,尤其如开发企业应用,先写功能再写测试可能效率更高,而且大部分时候是不需要TDD的 。而且我也没能在实际项目中获取太多TDD的好处 , 但是我获得了测试的好处 。

推荐阅读