亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit中的測試套件和參數化測試
作者:網絡轉載 發布時間:[ 2014/12/17 14:59:16 ] 推薦標簽:junit 單元測試 軟件測試

  JUnit4.X的參數化測試
  為保證單元測試的嚴謹性,通常會模擬不同的測試數據來測試方法的處理能力
  為此我們需要編寫大量的單元測試的方法,可是這些測試方法都是大同小異的
  它們的代碼結構都是相同的,不同的僅僅是測試數據和期望值
  這時可以使用JUnit4的參數化測試,提取測試方法中相同代碼 ,提高代碼重用度
  而JUnit3.8對于此類問題,并沒有很好的解決方法,JUnit4.x彌補了JUnit3.8的不足
  參數化測試的要點
  ① 準備使用參數化測試的測試類必須由org.junit.runners.Parameterized 運行器修飾
 、 準備數據。數據的準備需要在一個方法中進行,該方法需要滿足的要求如下
  1) 該方法必須由org.junit.runners.Parameterized.Parameters注解 修飾
  2) 該方法必須為返回值是java.util.Collection 類型的public  static方法
  3) 該方法沒有參數 ,方法名可隨意 。并且該方法是在該類實例化之前執行的
 、 為測試類聲明幾個變量 ,分別用于存放期望值和測試所用的數據
  ④ 為測試類聲明一個帶有參數的公共構造函數 ,并在其中為③ 中聲明的變量賦值
 、 編寫測試方法,使用定義的變量作為參數進行測試
  參數化測試的缺點
  一般來說,在一個類里面只執行一個測試方法。因為所準備的數據是無法共用的
  這要求,所要測試的方法是大數據量的方法,所以才有必要寫一個參數化測試
  而在實際開發中,參數化測試用到的并不是特別多
  下面是JUnit4.x中參數化測試的示例代碼
  首先是Calculator.java
package com.jadyer.junit4;
/**
* 數學計算-->加法
*/
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
  然后是JUnit4.x的參數化測試類ParameterTest.java
package com.jadyer.junit4;
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;
import com.jadyer.junit4.Calculator;
/**
* JUnit4的參數化測試
*/
@RunWith(Parameterized.class)
public class ParameterTest {
private int expected;
private int input11;
private int input22;
public ParameterTest(int expected, int input11, int input22){
this.expected = expected;
this.input11 = input11;
this.input22 = input22;
}
@Parameters
public static Collection prepareData(){
//該二維數組的類型必須是Object類型的
//該二維數組中的數據是為測試Calculator中的add()方法而準備的
//該二維數組中的每一個元素中的數據都對應著構造方法ParameterTest()中的參數的位置
//所以依據構造方法的參數位置判斷,該二維數組中的第一個元素里面的第一個數據等于后兩個數據的和
//有關這種具體的使用規則,請參考JUnit4的API文檔中的org.junit.runners.Parameterized類的說明
Object[][] object = {{3,1,2}, {0,0,0}, {-4,-1,-3}, {6,-3,9}};
return Arrays.asList(object);
}
@Test
public void testAdd(){
Calculator cal = new Calculator();
assertEquals(expected, cal.add(input11, input22));
}
}
/********************【該測試的執行流程】************************************************************************/
//1..首先會執行prepareData()方法,將準備好的數據作為一個Collection返回
//2..接下來根據準備好的數據調用構造方法。Collection中有幾個元素,該構造方法會被調用幾次
//   我們這里Collection中有4個元素,所以ParameterTest()構造方法會被調用4次,于是會產生4個該測試類的對象
//   對于每一個測試類的對象,都會去執行testAdd()方法
//   而Collection中的數據是由JUnit傳給ParameterTest(int expected, int input11, int input22)構造方法的
//   于是testAdd()用到的三個私有參數,被ParameterTest()構造方法設置好值了,而它們三個的值來自于Collection
/************************************************************************************************************/

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 天天躁夜夜躁狠狠躁2021a | 热久久精品免费视频 | 日韩特黄特色大片免费视频 | 日韩亚洲欧美综合 | 高h猛烈做哭bl壮汉受小说 | a级毛片在线视频免费观看 a级免费看 | aaa国产| 天天涩综合| 国产影音先锋 | 最近高清中文字幕2019 | 日韩高清一区二区 | 亚洲另类老妇videos | 天天天天躁天天天天碰 | 中国一级毛片免费观看 | 91se在线看片国产免费观看 | 成年网站免费入口在线观看 | 毛片手机在线观看 | 一色屋成人免费精品网站 | 白丝袜网站| 欧美成人三级一区二区在线观看 | 最近中文字幕在线观看 | 国产亚洲欧美日韩在线观看不卡 | 五月天激情综合小说专区 | caoporm国产精品视频免费 | 久插视频| 精品国产免费人成高清 | 波多野结衣在线一区 | 级毛片久久久毛片精品毛片 | 青青草国产免费久久久91 | 在线视免费频观看韩国aaa | 亚洲欧美中文日韩在线v日本 | 日本黄色mv| 亚洲无线码一区在线观看 | 在线涩涩 | 亚洲精品第四页中文字幕 | 日韩一区二区免费看 | 日日摸夜夜添欧美一区 | 一级毛片在线观看免费 | 88福利视频| 日韩经典视频 | 小雪婷的性欢日记h全文 |