在京東混了一個月,基本有點穩定了,以爲也有所餘力瞭如今,繼續寫博客吧,不過之後更新也許不是那麼頻繁了
本人使用的是junit框架,對開發是一個單元測試的java框架,可是對測試而言是java的基石之一,與testng差很少勢均力敵(好吧,實際上是稍微差一點)
在上文http://www.cnblogs.com/xuezhezlr/p/7773614.html簡單介紹了junit框架後,這裏做一個簡單的比較
junit框架與傳統main函數的主要區別:
1junit框架其實質包含多個main函數,相互間作到了必定程度上的互不影響,即使一個抱錯也不會對全部用例有所影響,對於針對一個測試類編寫大量的測試用例,是很相近的,更貼近測試
2junit框架有分明的before,after,beforeclass等相關標註,必定程度上簡化了代碼編寫,不過main函數比較複雜的for循環也能夠作到
3ant在執行junit框架的時候有對應的標籤,能夠生成必定的報告來進行呈現
4junit其自己有大量的測試人員使用,使用該框架能夠直接下降團隊溝通成本html
其實最主要的問題是,筆者只是對junit框架有一點粗淺的瞭解,,,其實對測試而言,特別是自動化測試,不必定須要你對testng,python等東西都有了解,只須要能本身用本身的辦法寫出來本身以爲合適,別人也以爲ok的東西就好,達到目的的重要性遠大於手段的華麗
下面開始演示一個junit框架的代碼自動執行,發郵件的操做java
首先先在上文http://www.cnblogs.com/xuezhezlr/p/7725301.html要求的環境中新創建一個java的工程,通常的java的包是有目錄層次的,本文也模擬通常的環境下多級目錄的情景,在src中的目錄依次創建文件夾,在其中創建一個方法testzhiyinlou.java,筆者的是E:\work\TestAuto_Integration\src\main\java\JD\jincai\ppt\testzhiyinlou.java,各位的要自行摸索,,,
在java文件中寫出下面代碼
package JD.jincai.ppt;python
import org.junit.Test;
import org.junit.Before;
public class testzhiyinlou {
int x=0;
@Before
public void setUp() throws Exception {
x++;
}
@Test
public void testszlr1() throws Exception {
System.out.println(++x);
}
@Test
public void testszlr2() throws Exception {
System.out.println(++x);
}
}app
理論上是能夠運行的,,,不能運行自行摸索,結果應該是兩個2
也就是說在咱們已經學會了如何自動運行.bat文件的基礎上,本文主要是講述如何用一個.bat文件運行上述代碼這麼一件事情
說直白點,咱們要作的是,自動運行.bat文件而後.bat文件中會調用ant命令,而ant命令呢,又直接調用build.xml文件,因此,所謂junit自動化和java自動化的區別,本質是代碼和build.xml文件的區別~
代碼已經貼上去了,咱們說一下與上文配套的build文件
創建一個build.xml文件,寫上以下內容:
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="junit and report" name="TestAuto">
<tstamp prefix="mydate">
<format property="day" pattern="yyyy-MM-dd"/>
<format property="time" pattern="HH:mm:ss"/>
<format property="dt" pattern="yyyy-MM-dd HH:mm:ss.SSS"/>
<format property="dt1" pattern="yyyyMMdd" offset="-1" unit="day" />
<format property="dt2" pattern="yyyyMMdd" offset="-3" unit="day" />
<format property="dt3" pattern="yyyyMMdd" offset="0" unit="day" />
<format property="dt4" pattern="yyyyMMddHHmmss" />
</tstamp>框架
<property name="appname" value="TestAuto"/>
<property name="build.dir" value="C:\Users\zouleiran\Desktop\autoTest" />
<property name="build.class.dir" value="E:\work\TestAuto_Integration\target\classes" />
<property name="build.lib.dir" value="${build.dir}\lib" />
<property name="build.report.dir" value="${build.dir}\report\${appname}_zlr" />
<property name="build.report.name" value="${appname}_zlr" />
<target name="junit and report" depends=""
description="run test and send report">
<delete dir="${build.report.dir}" />
<mkdir dir="${build.report.dir}" />
<junit printsummary="on" fork="true" showoutput="true">
<sysproperty key="file.encoding" value="GBK" />
<formatter type="xml" usefile="true" />
<classpath>
<fileset dir="${build.lib.dir}" includes="**\*.jar" />
<pathelement path="${build.class.dir}" />
</classpath>
<batchtest todir="${build.report.dir}">
<formatter type="brief" usefile="true"/>
<fileset dir="${build.class.dir}">
<include name="JD\jincai\ppt\testzhiyinlou.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${build.report.dir}">
<fileset dir="${build.report.dir}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${build.report.dir}" />
</junitreport>
</target>
</project>函數
下面進行講解
先說明白,E:\work\TestAuto_Integration\src\main\java\JD\jincai\ppt\testzhiyinlou.java是個人機器的java文件路徑,而class文件路徑E:\work\TestAuto_Integration\target\classes\JD\jincai\ppt\testzhiyinlou.class
在build文件中,$這個美圓符號是參數化的意思,下面對文件的參數化進行大概講解
build.dir是指咱們的文件的位置,通常是報告和其餘的文件的相近路徑,後文沒有直接使用
build.class.dir是class文件的位置,在文中主要是
<fileset dir="${build.class.dir}">
<include name="JD\jincai\ppt\testzhiyinlou.class"/>
</fileset>
這兩句使用了,也就是說,build.class.dir=class文件路徑 減去 package JD.jincai.ppt這個class的相對路徑,即:E:\work\TestAuto_Integration\target\classes\JD\jincai\ppt\testzhiyinlou.class-JD\jincai\ppt\testzhiyinlou.class=E:\work\TestAuto_Integration\target\classes
本質是指定運行時候的class方法的起點位置,理應在class文件的根目錄,而後利用這裏的include name這個參數,指選哪一個class便可運行哪個class,當須要運行多個class時候。能夠用正則,*等表示也能夠用多行表示,以下
<include name="JD\jincai\ppt\testzhiyinlou1.class"/>
<include name="JD\jincai\ppt\testzhiyinlou2.class"/>
<include name="JD\jincai\ppt\testzhiyinlou3.class"/>單元測試
build.lib.dir這個參數是運行代碼時候所依賴的jar包所在位置(本文不討論mvn依賴,只討論最原始的junit框架運行),因爲ant自己有必定的jar包因此通常執行ant的lib目錄,再把項目所須要的jar包放在lib下便可執行,因爲事例過於簡單,無需額外jar包故無需添加
xml中classpath標籤是指咱們的jar包所在地點,而batchtest是指咱們真正運行的@Test的文件路徑
junitreport是junit報告階段,使用的參數時build.report.name和build.report.dir,這兩個參數直接指定了報告文件夾所在位置
以上即是咱們的程序,其實在xml中的區別就是,ant針對junit框架有專門的標籤,能夠直接使用junit標籤來作,同時也有junitreport來直接生成報告,下一篇隨筆講發報告的問題測試