就本人公司 每日构建的 实现
当了版主这么长时间,没有发帖子,实在不好意思,现在,我只是针对 本公司 java 项目的每日构建 介绍一下,希望对大家有一些帮助。同时也可以相互探讨:我们公司的一个项目是java 开发的,web 应用 基于 tomcat 运行,后台数据库是 oracle。 代码版本控制是 cvs 。 代码服务器在美国。
作为 一家外包公司,每天我们程序员 在上班的第一天开始 从cvs 下载最新的代码,编译,如果有冲突,会解决冲突,没有的话,开始编码,作为我们公司的 测试人员,基于公司的模式,我们实现以下 构建。
编译
ant 提供了强大的编译功能,我们在开始写 build.xml 的时候,并没有写 compile 这步,而是直接从cvs 里面下载相应模块的build。xml 后,调用。这样做的目的是为了保证测试 和 开发的 使用同一套 编译脚步编译,保证协调 ,一致性。
这里,我们使用了 ant 的如下功能:
<ant antfile="build.xml" dir="./${release.home}/cvs/DPS/PhaseII/AE/" target="all"/>
编译好的代码,我们会 自己拷贝到对应的 目录。
单元测试
junit ,对应的测试模块,我们的开发人员已经 提交到cvs ,我们从cvs update 后,编译运行。在运行之前,先在数据库里 初始化 相应的测试数据,在ant 中,我们使用下面的方法 插入数据到 数据库:
<target name="dbinit_insert">
<sql
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.100.1:1521:china"
userid="uni_app2"
password="ladodgers"
onfiltered="continue"
>
<transactionsrc="./sql/InsertTestOrderNoteData.sql"/> <!-- For Test Case TestUserLiveValidation -->
<transactionsrc="./sql/TestUserLiveValidationBegin.sql"/> <!-- For Test Case TestUserLiveValidation -->
<transactionsrc="./sql/InsertTestCreateInventoryData.sql"/> <!-- For Test Case TestCreateInventory -->
<transactionsrc="./sql/InsertTestPerformanceVenueData.sql"/> <!-- For Test Case TestPerformanceVenue -->
<transactionsrc="./sql/InsertTestPerformanceManifestData.sql"/> <!-- For Test Case TestPerformanceManifest -->
<transactionsrc="./sql/InsertTestPerformanceData.sql"/> <!-- For Test Case TestPerformance -->
<transactionsrc="./sql/InsertTestPerformancePriceCodeData.sql"/> <!-- For Test Case TestPerformancePriceCode -->
<classpath>
<path refid="lib.path"/>
</classpath>
</sql>
</target>
然后开始 运行单元测试。
在单元测试结束后,把插入的册书数据 清空,目的是 下次 运行 的时候,可以再次初始化 数据库。
<target name="dbinit_delete">
<sql
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.100.1:1521:china"
userid="uni_app2"
password="ladodgers"
onfiltered="continue"
>
<transactionsrc="./sql/deleteTestOrderNoteData.sql"/> <!-- For Test Case TestUserLiveValidation -->
<transactionsrc="./sql/TestUserLiveValidationEnd.sql"/> <!-- For Test Case TestUserLiveValidation -->
<transactionsrc="./sql/deleteTestCreateInventoryData.sql"/> <!-- For Test Case TestCreateInventory -->
<transactionsrc="./sql/deleteTestPerformanceVenueData.sql"/> <!-- For Test Case TestPerformanceVenue -->
<transactionsrc="./sql/deleteTestPerformanceManifestData.sql"/> <!-- For Test Case TestPerformanceManifest -->
<transactionsrc="./sql/deleteTestPerformanceData.sql"/> <!-- For Test Case TestPerformance -->
<transactionsrc="./sql/deleteTestPerformancePriceCodeData.sql"/> <!-- For Test Case TestPerformancePriceCode -->
<classpath>
<path refid="lib.path"/>
</classpath>
</sql>
</target>
在我们的 build.xml 中,以下列顺序执行 target:
1。 cvs update code
2. call build.xml compile source code
3. call build.xml compile unit test source code
4. insert data to database .
5. run unit test
6. generate unit test report
7. run clover check unit test cover rate
8. generate unit test cover ratereport
9. delete test data from data base
10.Email all report to PM and Leader . deploy these report base on web service . ding
LZ 强人
使劲ding 拜读一下,楼主辛苦了。我们公司也是做java的,美国外包。。。。。 学习 作了一年的黑盒,想研究下白盒是怎么回事 顶一下,呵呵,虽然还是看不太懂ORCAL代码........ ding 请问版主是使用什么工具进行单元测试覆盖度的计算的?
thanks :) 学习下。 谢谢 定,好文! 弱弱问一下,楼主是版主吗? 如果更新的代码非常多的话,怎么保证程序都更新了?构建的历史该怎么处理? 上面的干嘛呢?还打广告````有意思不?
单元测试正在学习之中! 学习了!
页:
[1]