會不會搭建測試平臺是通常測試工程師和高級測試工程師分水嶺 ----tobecrazyhtml
咱們項目有現成的測試平臺,使用的是selenium grid+testng+ant+jenkins+VMjava
可是我平時用的是selenium+testng並未體驗過使用ant 和jenkins,今天心血來潮嘗試使用一下jenkins.web
Jenkins簡介:apache
1.可持續build或test projectwindows
2.監控外部執行的jobscookie
瞭解更多看https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins框架
首先安裝Jenkins,下載windows平臺的版本eclipse
因爲安裝比較簡單,這裏就再也不介紹jvm
安裝ant,下載ant zip文件,解壓到C:\Program Files\apache-ant-1.9.4測試
在系統變量添加ANT_HOME
以後再CMD運行ant -version
若顯式:Apache Ant(TM) version 1.9.4 compiled on April 29 2014
說明ant 配置成功
首先了解一下簡單使用ant
使用note pad 寫一個class,保存爲Test java
public class Test { /** * @author tobecrazy * */ public static void main(String[] args) { System.out.println("This ANT HOME "); System.out.println(System.getenv("ANT_HOME")); } }
在cmd嘗試編譯:javac Test.java
如官方沒有報錯,恭喜你,能夠進行下一步
使用ant所作的操做和命令行輸入是同樣的,只不過全部的命令轉換爲xml標籤:
此次配置以下:
每一個target是一個操做,clean是刪除build目錄,compile是編譯,run是執行java class
<?xml version="1.0"?> <project name="AntTest" default="run" basedir="." > <!-- 默認target是run,運行ant命令直接執行run --> <echo message="The base dir is: ${basedir}" /> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <!-- 編譯java文件依賴clean --> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> <target name="run" depends="compile"> <!-- 運行class文件,依賴compile --> <echo message="Compile dir is: ${basedir}\build\classes" /> <java classname="Test"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> </project>
以後在命令行輸入ant(cmd切換到該目錄)
結果以下:
D:\AntTest>ant
Buildfile: D:\AntTest\build.xml
[echo] The base dir is: D:\AntTest
clean:
[delete] Deleting directory D:\AntTest\build
compile:
[mkdir] Created dir: D:\AntTest\build\classes
[javac] D:\AntTest\build.xml:11: warning: 'includeantruntime' was not set, d
efaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to D:\AntTest\build\classes
run:
[echo] Compile dir is: D:\AntTest\build\classes
[java] This ANT HOME
[java] C:\Program Files\apache-ant-1.9.4
BUILD SUCCESSFUL
Total time: 1 second
爲了配合使用selenium webdriver打開eclipse建立名爲Demo的項目
接下來就是使用Jenkins,若是你的Jenkins安裝成功,打開http://localhost:8080/會顯示Jenkins主頁
點擊新建->輸入項目名->選擇「構建一個自由風格的軟件項目」->構建->增長構建步驟->選擇invoke ANT
接下來配置以下:
此時準備ant build.xml放到工程的根目錄
build.xml內容以下,testng 和selenium的jar包須要加載,因此設置
<path id="run.classpath">
因爲項目使用的UTF-8編碼,在編譯時報錯因此添加
<javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">
<?xml version="1.0"?> <project name="Demo" default="run" basedir="."> <echo message="import libs" /> <path id="run.classpath"> <fileset dir="${basedir}"> <include name="lib/testng.jar" /> <include name="lib/sikuli-script.jar" /> </fileset> <fileset dir="${basedir}/lib/selenium"> <include name="selenium-java-2.45.0.jar" /> <include name="libs/*.jar" /> </fileset> </path> <taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" /> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <echo message="mkdir"/> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8"> <classpath refid="run.classpath"/> </javac> </target> <path id="runpath"> <path refid="run.classpath"/> <pathelement location="build/classes"/> </path> <target name="run" depends="compile"> <testng classpathref="runpath" outputDir="test-output"> <xmlfileset dir="${basedir}" includes="testng.xml"/> <jvmarg value="-ea" /> </testng> </target> </project>
更多ant和testng classname="org.testng.TestNGAntTask"是固定格式
參考:http://testng.org/doc/index.html
接下來在項目添加幾個case,項目目錄以下
準備testng的配置文件以下,放在工程的根目錄下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite" parallel="none"> <test name="Test"> <groups> <run> <include name="Case1" /> <include name="MapTest" /> <include name="JDaddress" /> <include name="useCookies" /> </run> </groups> <classes> <class name="com.dbyl.tests.Case1"/> <class name="com.dbyl.tests.JDaddress"/> <class name="com.dbyl.tests.UseCookieLogin"/> <class name="com.dbyl.tests.MapTest"/> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
接下來就是見證奇蹟的時候:
在Jenkins裏選擇構建
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Demo [workspace] $ cmd.exe /C '""C:\Program Files\apache-ant-1.9.4\bin\ant.bat" -file Demo run && exit %%ERRORLEVEL%%"' Buildfile: C:\Users\Young\workspace\Demo\build.xml [echo] import libs clean: [delete] Deleting directory C:\Users\Young\workspace\Demo\build compile: [echo] mkdir [mkdir] Created dir: C:\Users\Young\workspace\Demo\build\classes [javac] C:\Users\Young\workspace\Demo\build.xml:21: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 6 source files to C:\Users\Young\workspace\Demo\build\classes run: [testng] [TestNG] Running: [testng] C:\Users\Young\workspace\Demo\testng.xml [testng] [testng] Fast test [testng] Slow test [testng] Starting ChromeDriver (v2.9.248315) on port 43260 [testng] Starting ChromeDriver (v2.9.248315) on port 20660 [testng] Starting ChromeDriver (v2.9.248315) on port 13803 [testng] cookie write to file。。。。