您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
總結(jié)TestNg與Junit的異同
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/2/27 14:36:14 ] 推薦標(biāo)簽:TestNG Junit

  相同點(diǎn):
  1.都可以做忽略測試,可以忽略某個(gè)測試方法(在方法上面注釋),也可以忽略某個(gè)測試類(在類的上面注釋)
  testNg:
  @Test(enabled = false)
  Junit:
  @Ingore
  @Test
  2.都支持?jǐn)?shù)據(jù)驅(qū)動(dòng)測試,只是用法不一樣
  testng中可以用@DataProvider,參數(shù)化是在測試級別的,不需要通過構(gòu)造函數(shù)來傳遞參數(shù),它會(huì)自動(dòng)映射。
  舉例:
//表示這個(gè)方法將提供數(shù)據(jù)給任何聲明它的data provider名為“test1”的測試方法中
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
{ "Cedric", new Integer(36) },
{ "Anne", new Integer(37)},
};
}
//下面這個(gè)方法將要調(diào)用名為test1的data provider提供的數(shù)據(jù)
@Test(dataProvider="test1")
public void verifyDta(String n1,Integer n2){
System.out.println(n1 + " " + n2);
}
  需要注意的是@Test(dataProvider=)和@DataProvider(name=)可以在同一個(gè)類中,使用方法如上;如果不在同一個(gè)類中,那么必須把@DataProvider(name=)所在的類的這個(gè)方法定義成static靜態(tài)方法。
  并且在@Test使用的時(shí)候需要制定類。用法是@Test(dataProvider="",dataProviderClass=(@DataProvider所在的類).class)
  而在junit中麻煩多了。junit中的參數(shù)化是在類級別的,需要通過構(gòu)造函數(shù)來傳遞參數(shù)。
  如下:
  package demo;
  public class Try {
  public  int result=3;
  public  int add(int n) {
  result += n;
  return result;
  }
  }
  測試代碼:
package demo;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
//步驟1.指定特殊的運(yùn)行器Parameterized.class
@RunWith(Parameterized.class)
public class TryTest {
// 步驟2:為測試類聲明幾個(gè)變量,分別用于存放期望值和測試所用數(shù)據(jù)。此處我只放了測試所有數(shù)據(jù),沒放期望值。
private int param, result;
// 步驟3:申明構(gòu)造函數(shù)
public TryTest(int param, int result) {
super();
this.param = param;
this.result = result;
}
// 步驟4:定義測試數(shù)據(jù)的集合,該方法可以任意命名
// 但是必須使用@Parameters標(biāo)注進(jìn)行修飾
// 這個(gè)方法的框架不予解釋了,大家只需要注意其中的數(shù)據(jù),是一個(gè)二維數(shù)組,數(shù)據(jù)兩兩一組
// 每組中的這兩個(gè)數(shù)據(jù),一個(gè)是參數(shù),一個(gè)是你預(yù)期的結(jié)果。
// 比如我們的第一組{4, 7},4是參數(shù),7是預(yù)期的結(jié)果。分別對應(yīng)上面構(gòu)造函數(shù)的param和result
@Parameters
public static Collection<Object[]> testDate() {
Object[][] object = { { 1, 4 }, { 3, 6 }, { 1, 3 } };
return Arrays.asList(object);
}
// 步驟5:編寫測試方法,使用定義的變量作為參數(shù)進(jìn)行測試
// 這里的編寫方法和以前的測試方法一樣
@Test
public void testAdd() {
Try test = new Try();
assertEquals(result, test.add(param));
}
}
  3.超時(shí)測試,是在規(guī)定時(shí)間內(nèi)如果沒有測試完成,認(rèn)定測試失敗
  @Test(timeout=100)
  4.異常測試,是在運(yùn)行這個(gè)單元測試的時(shí)候應(yīng)該要捕獲到指定的異常,才算測試成功

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