您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
JUnit的基本使用
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/11/19 15:25:20 ] 推薦標(biāo)簽:JUnit 軟件測(cè)試 單元測(cè)試

  一些關(guān)于單元測(cè)試的理念:
  單元測(cè)試并不能證明你的代碼是正確的,只能證明你的代碼是沒有錯(cuò)誤的。
  Keep bar green and keep your code cool
  關(guān)于JUnit的兩種基本的使用步驟
  第一種方式<4.0的JUnit版本
  1、 在已經(jīng)編寫好的項(xiàng)目中新建一個(gè)package用于單元測(cè)試。
  2、 要在buildpath中加入JUnit對(duì)應(yīng)的包。
  3、 新建一個(gè)類,比如unitTest
  4、 當(dāng)前的類需要繼承Test類,需要導(dǎo)入一下的一些包:
  import static org.junit.Assert.*;
  import junit.framework.TestCase;
  import org.junit.Test;
  5、 編寫自己的測(cè)試函數(shù),可以編寫多個(gè),感覺上每個(gè)函數(shù)都相當(dāng)于一個(gè)main方法,要注意的是需要用來(lái)執(zhí)行的函數(shù)都要以test開頭。
  6、 在對(duì)應(yīng)的測(cè)試類上點(diǎn)擊Run as 之后點(diǎn)擊JUnit Test 可以執(zhí)行對(duì)應(yīng)的test開頭的方法了。
  第二種方式>=4.0的JUnit版本
  1、 這種方式是基于注解來(lái)進(jìn)行的,先要加上對(duì)應(yīng)的包import org.junit.Test,其他的不用加了。
  2、 類名不需要繼承TestCase,測(cè)試方法也不需要以test開頭。
  3、 只需要在方法的前面加上@Test的注解,之后 Run as—>JUnit test這樣會(huì)自動(dòng)對(duì)加了注解的方法進(jìn)行測(cè)試。
  使用注解的方式還是比較推薦的,好在利用注解的時(shí)候方法名也能與之前的保持一致,這樣能與4.0版本之前的JUnit兼容了。
  這種方式的大致原理還是利用反射,先獲得Class類實(shí)例,之后利用getMethods方法得到這個(gè)類的所有的方法,之后遍歷這個(gè)方法,判斷每個(gè)方法是否加上了@Test注解,如果加上了注解,執(zhí)行。大多數(shù)框架內(nèi)部都是依靠反射來(lái)進(jìn)行的。實(shí)際情況中還是比較推薦使用注解的,還有一些常用的注解,比如:@Before @After這兩個(gè)分別表示方法(@Test之后的)執(zhí)行之前要執(zhí)行的部分,以及方法執(zhí)行之后要執(zhí)行的部分,注意這里每個(gè)被@Test標(biāo)注過的方法在執(zhí)行之前與執(zhí)行之后都要執(zhí)行@Before以及@After標(biāo)注過的方法,因此被這兩個(gè)注解標(biāo)記過的方法可能會(huì)執(zhí)行多次。
  對(duì)于@BeforeClass以及@AfterClass顧名思義表示在整個(gè)測(cè)試類執(zhí)行之前與執(zhí)行之后要執(zhí)行的方法,被這兩個(gè)注解標(biāo)記過的方法在整個(gè)類的測(cè)試過程中只是執(zhí)行一次。
  還有一個(gè)常用到的方法是Assert.assertEquals方法,表示預(yù)期的結(jié)果是否與實(shí)際出現(xiàn)的結(jié)果是否一致,可以有三個(gè)參數(shù),第一個(gè)參數(shù)表示不一致時(shí)候的報(bào)錯(cuò)信息,第二個(gè)參數(shù)表示期望的結(jié)果,第三個(gè)參數(shù)表示實(shí)際的結(jié)果。
  還有一部分是關(guān)于組合模式的使用,比如寫了好多的測(cè)試類,ATest BTest ....總不能一個(gè)一個(gè)點(diǎn),能一起讓這些測(cè)試類都運(yùn)行起來(lái)是好不過了,這時(shí)候要使用到兩個(gè)注解:@RunWith(Suite.class)以及@SuiteClasses({ xxTest.class,xxTest.class })
  當(dāng)然JUnit的整個(gè)過程中還涉及到了許多經(jīng)典的設(shè)計(jì)模式,這個(gè)再進(jìn)一步進(jìn)行分析。
  下面是一個(gè)實(shí)際的例子,展示一下常見的幾個(gè)注解的使用:
//一個(gè)簡(jiǎn)單的Student類以及一個(gè)Teacher類 輸出其基本信息
package com.test.unittest;
public class Student {
int id;
int age;
String name;
public Student(int id, int age, String name) {
super();
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd