搭建持續整合單元測試平臺(Jenkins+Ant+Java+Junit+SVN)
一、環境準備
- Jenkins:
- 到官網下載jenkins.war包:http://jenkins-ci.org/
- 安裝方法有兩種:
- 把下載下來的jenkins.war包放到資料夾下,如C:jenkins,然後開啟命令列視窗並進到該目錄下,執行java -jar jenkens.war命令,當提示:“Jenkins is fully up and running”時,表示啟動成功,這時在瀏覽器視窗輸入:http://localhost:8080/ 就可到jenkins的首頁。
- 如果有tomcat,把jenkins.war包放在tomcat的webapps資料夾下,啟動tomcat時會自動啟動jenkins,這時通過http://localhost:8080/jenkins就 可以訪問jenkins的首頁了。
- ANT:
下載ant並配置ANT_HOME,官網:http://ant.apache.org/。
3、Junit:
下載junit.jar包,沒用過的可參考:http://blog.csdn.net/lengyuhong/article/details/5815017
4、SVN:
1、用本地硬碟當SVN倉庫:http://wenku.baidu.com/view/12b02f6a011ca300a6c39081.html
2、SVN伺服器搭建和使用:http://www.cnblogs.com/xiaobaihome/tag/SVN/ (推薦用此種方法,後面有原因)
二、專案程式碼:
環境準備好了之後就可開始寫程式碼、單元測試案例以及ANT用來構建的build.xml檔案,這些內容在上一篇ANT task之Junit、JunitReport有講過,這裡不細講:
1、Java程式碼:
package com.glen.he; public class ComplexCalculation { public int Division(int a,int b){ return (a/b); } public int Multiply(int a,int b){ return (a*b); } }
ComplexCalculation.java
package com.glen.he; public class SimpleCalculation { public int Add(int a,int b){ return (a+b); } public int Subtration(int a,int b){ return(a-b); } }
SimpleCalculation.java
2、單元測試程式碼:
package com.glen.he; import com.glen.he.ComplexCalculation; import static org.junit.Assert.*; import org.junit.Test; public class ComplexCalculationTest { ComplexCalculation cc = new ComplexCalculation(); @Test public void DivisionTest() { int c = cc.Division(100, 5); assertEquals(20, c); } @Test public void MultiplyTest() { int c = cc.Multiply(100, 5); assertEquals(500, c); } }
ComplexCalculationTest.java
package com.glen.he; import com.glen.he.SimpleCalculation; import static org.junit.Assert.*; import org.junit.Test; public class SimpleCalculationTest { SimpleCalculation sc = new SimpleCalculation(); @Test public void AddTest() { int c = sc.Add(3, 5); assertEquals(8, c); } @Test public void SubtrationTest() { int c = sc.Subtration(20, 5); assertEquals(15, c); } }
SimpleCalculationTest.java
3、build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="AntDemo" default="junit" basedir="."> <!-- =================================================================== --> <!-- 變數設定 --> <!-- =================================================================== --> <!-- 原始碼src路徑 --> <property name="src.path" value="src/java"/> <!-- 單元測試程式碼路徑 --> <property name="test.path" value="src/test"/> <!-- 編譯檔案class路徑 --> <property name="build.path" value="build"/> <!-- jar包路徑 --> <property name="dist.path" value="dist"/> <!-- lib包路徑 --> <property name="lib.path" value="lib"/> <!-- 生成報告junit4.xml路徑 --> <property name="report.path" value="report"/> <!-- =================================================================== --> <!-- 設定classpath --> <!-- =================================================================== --> <path id="compile.path"> <fileset dir="${lib.path}"> <include name="**/*.jar"/> </fileset> <pathelement path="${build.path}"/> </path> <!-- 初始化 --> <target name="init"> <mkdir dir="${build.path}"/> <mkdir dir="${report.path}"/> <mkdir dir="${dist.path}"/> </target> <!-- =================================================================== --> <!-- 清除歷史編譯class --> <!-- =================================================================== --> <target name="clean" description="clean"> <delete dir="${build.path}"/> <delete dir="${report.path}"/> <delete dir="${dist.path}"/> </target> <!-- =================================================================== --> <!-- 編譯測試檔案,初始化目錄 --> <!-- =================================================================== --> <target name="compile" depends="init"> <javac srcdir="${src.path}" destdir="${build.path}" classpathref="compile.path" includeantruntime="true"/> <javac srcdir="${test.path}" destdir="${build.path}" classpathref="compile.path" includeantruntime="true"/> </target> <!-- =================================================================== --> <!-- 執行測試案例 --> <!-- =================================================================== --> <target name="junit" depends="compile"> <junit printsummary="true" fork="true"> <formatter type="xml" usefile="true"/> <classpath refid="compile.path"/> <batchtest fork="on" todir="${report.path}" haltonfailure="no"> <fileset dir="${build.path}"> <include name="**/*Test.class"/> </fileset> </batchtest> </junit> </target> <target name="junit-report" depends="junit"> <!-- 產生單元測試報表文件 --> <junitreport todir="${report.path}"> <fileset dir="${report.path}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${report.path}" /> </junitreport> </target> <target name="make-jar" depends="compile" description="make jar file"> <jar jarfile="${dist.path}/AntDemo.jar"> <fileset dir="${build.path}"> <!--除去test檔案--> <exclude name="**/*Test.class"/> </fileset> </jar> </target> </project>
build.xml
三、配置Jenkins:
PS:Jenkins可以通過master/slave來支援分散式的job執行,本文執行在master,即Jenkins所在的機器。
1、開啟jenkins首頁,新建一個job,輸入Item名稱,選擇 構建一個自由風格的軟體專案,點選”OK”
2、在 原始碼管理 那裡,選擇Subversion,在Repository URL後面,輸入你的SVN地址。
PS:Repository URL使用本地磁碟當倉庫這種方法後來我在其它機器上試驗時,發現老是報錯:svn: E180001: Unable to open an ra_local session to URL。一時沒有找到解決辦法,大家如果也碰到此問題,可以搭建SVN伺服器來管理原始碼,我試了,挺好使的。
3、在 構建 那裡也可以有兩種做法:
I、選擇Execute Windows batch command,在輸入框輸入如下命令(這裡我選擇的是這個方法):
set path=C:ANT_HOMEApache-Ant-1.7.0in;path 把ant的安裝目錄新增到path
ant junit 執行junit task
II、方法I比較麻煩,如果我們設定好了ANT_HOME,可以選擇Invoke Ant,然後在targets裡面指定我們build.xml裡的task name。
4、點選儲存,然後選擇立即構建,執行結果:
參考資料:
http://hi.baidu.com/janice515/item/3272fe9b99eb4cc8b6253101
http://blog.csdn.net/lengyuhong/article/details/5828770
相關文章
- 搭建持續整合介面測試平臺(Jenkins+Ant+Jmeter)JenkinsJMeter
- Jenkins+Ant+Jmeter搭建持續整合的介面測試平臺JenkinsJMeter
- 持續整合之路——資料訪問層的單元測試(續)
- Apworks框架實戰(三):單元測試與持續整合框架
- Laravel 持續測試主控平臺Laravel
- 加速Java應用開發速度3:單元/整合測試+持續整合Java
- ET-ci — 全自動軟體測試排程(持續整合)平臺
- Jenkins搭建持續打包平臺Jenkins
- .net持續整合單元測試篇之單元測試簡介以及在visual studio中配置Nunit使用環境
- ET·ci —持續整合驗證平臺
- Linux 核心的持續整合測試Linux
- .netcore持續整合測試篇之搭建記憶體伺服器進行整合測試一NetCore記憶體伺服器
- 使用 Xcode Server 持續整合 & 打包測試XCodeServer
- .net持續整合測試篇之Nunit引數化測試
- .netcore持續整合測試篇之測試方法改造NetCore
- 為什麼單元測試不是持續交付的唯一答案
- .net持續整合測試篇之Nunit that斷言
- 軟體測試持續整合的方法實踐
- SoapUI實踐:自動化測試、壓力測試、持續整合UI
- 持續整合平臺 01 jenkins 入門介紹Jenkins
- 關於測試平臺的搭建 (我們要不要搭建測試平臺)
- 聊聊持續測試
- (jenkins)hudson平臺搭建android專案持續化整合以及基於NativeDriver的UI自動化測試環境JenkinsAndroidUI
- .Net單元測試xUnit和整合測試指南(1)
- Django測試與持續整合:從入門到精通Django
- LevOJ平臺 - 持續更新
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- 軟體測試---單元、整合、系統、驗收測試
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- 持續整合、持續部署、持續交付、持續釋出
- .net持續整合測試篇之Nunit常見斷言
- 思考如何將自動化測試加入持續整合中
- Android App持續整合效能測試:啟動流量(1)AndroidAPP
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- Linux下搭建Jenkins持續整合LinuxJenkins
- jenkins + Git 搭建持續整合環境JenkinsGit
- 傳統企業如何打造統一的持續整合平臺