JUnit的註解、套件和引數化設定的介紹
JUnit4中的註解、測試套件和引數化設定
註解
上面博文已經介紹瞭如下的註解:
1、@BeforeClass,用此註解修飾的方法將在所有方法執行前被執行,是一個static方法,只執行一次。
2、@AfterClass,用此註解修飾的方法將在所有方法執行後被執行,也是一個static方法,只執行一次。
3、@Before,用此註解修飾的方法在每個test方法執行前執行
4、@After,用此註解修飾的方法在每個test方法執行後執行
5、@Test,表明此方法為測試方法。
其中,@Test有兩個引數,分別為:expected 和 timeout。
下面將以例子的形式來說明這兩個引數的作用。
先看expected引數
public class AnonationTest {
@Test
public void testDivide() {
assertEquals(2, new Calcalate().divide(4, 0));
}
@Test(expected=ArithmeticException.class)
public void testDivide1(){
assertEquals(2, new Calcalate().divide(4, 0));
}
}
在上面的Test中,有兩個測試方法,他們的唯一區別在於,testDivide1方法中用註解@Test帶有excepted引數。
執行結果如下:
從結果可以看出,testDivide是報錯的,報除零錯誤。而testDivide1由於使用了@Test(expected=ArithmeticException.class),即預期會有算術異常會發生,即使真的有異常發生,也會通過。
@Test(expected=xxx.class),預期會發生什麼,這就是此引數的作用。
下面來看 @Test的引數 timeout
timeout的作用:為測試函式設定一定的執行時間,避免死迴圈。
@Test(timeout=4000)
public void testWhile(){
while(true ){
System.out.println("run always..");
}
}
上面的測試函式中,就是使用了timeout引數來限時4000毫秒。如果不用它來進行限時,則testWhile這個函式就會一直執行下去。
除了上面介紹的註解之外,還有兩個註解。
6、Ignore:所修飾的測試方法會被測試執行器忽略。
看如下的程式碼:
public class AnonationTest {
@Test
@Ignore
public void testDivide() {
assertEquals(2, new Calcalate().divide(4, 0));
}
@Test(expected=ArithmeticException.class)
public void testDivide1(){
assertEquals(2, new Calcalate().divide(4, 0));
}
@Test(timeout=4000)
@Ignore
public void testWhile(){
while(true){
System.out.println("run always..");
}
}
}
上面的程式碼中,有兩個測試方法被註解@Ignore 修飾了,則這兩個方法都會被測試執行器所忽略。
執行結果如下,紅線標出來的測試方法就是被忽略的,與我們的預期一樣。
7、RunWith:更改測試執行器,在介紹JUnit套件的使用中會介紹到。
JUnit4套件的使用
測試套件就是組織一組測試類一起執行的。
如何來寫一個測試套件呢??
1、寫一個作為測試套件的入口類,這個類中不包含任何內容。
2、用註解@RunWith更改測試執行器為:Suite.class.
3、將要測試的類作為陣列傳入到@Suite.SuiteClasses({})中即可。
如下是一個例子:
//定義一個套件,套件裡面必須為空
@RunWith(Suite.class) //更改測試執行器
//下面這個是載入執行的測試類,用陣列的形式給出
@Suite.SuiteClasses({CalculateTest.class,CalculateTest2.class,CalculateTest3.class,AnonationTest.class})
public class SuiteTest {
// 為空
}
JUnit4的引數化設定
引數化設定的幾個步驟如下:
第一步:更改測試執行器為RunWith(Parameterized.class)
第二步:宣告變數來存放預期值和輸入值
第三步:宣告一個返回值為Collection的公共靜態方法,並使用@Parameters來進行修飾
第四步:宣告一個建構函式,並在其中為之宣告變數賦值
第五步:宣告測試函式
例子程式如下:
@RunWith(Parameterized.class) //第一步
public class ParameterTest {
//第二步
private int expected;
private int input1;
private int input2;
//第三步
@Parameters
public static Collection<Object[]> t(){
return Arrays.asList(new Object[][]{
{5,1,4},
{8,2,6}
});
}
//第四步
public ParameterTest(int expected,int input1,int input2){
this.expected=expected;
this.input1=input1;
this.input2=input2;
}
//第五步
@Test
public void testAdd(){
assertEquals(expected, new Calcalate().add(input1, input2));
}
}
相關推薦
JUnit的註解、套件和引數化設定的介紹
JUnit4中的註解、測試套件和引數化設定 註解 上面博文已經介紹瞭如下的註解: 1、@BeforeClass,用此註解修飾的方法將在所有方法執行前被執行,是一個static方法,只執行一次。 2、@AfterClass,用此註解修飾的方法將在所有方
JUnit4筆記(三)---JUnit的測試套件和引數化設定
1、JUnit測試套件 講這個之前先要說一下@RunWith。如果一個類被@RunWith註釋修飾,或者類繼承了一個被該註釋修飾的類,JUnit將會使用這個註釋所指明的執行期來執行測試,而不是JUnit預設的執行期。 測試套件是為了便於同
Java單元測試工具:JUnit4(四)——JUnit測試套件使用及引數化設定
(四)JUnit測試套件使用及引數化設定 這篇筆記記錄JUnit測試套件的使用,即批量執行測試類;以及JUnit中的引數化設定。 @RunWith 當類被
Junit4——測試套件的使用和引數化測試
一,測試套件 @RunWith(Suite.class)/*使類成為測試套件的入口類*/ @Suite.SuiteClasses({TaskTest1.class,TaskTest2.class
控件、組件和插件的區別
靜態 編輯 ron 例子 文本 允許 strong 軟件 一點 (1)組件:首先最廣的應該是組件。凡是在軟件開發中用到了軟件的復用,被復用的部分都可以稱為組件。 (2)插件:插件是組件中中的一種,凡是在應用程序中已經預留接口的組件就是插件。可以拿IE插件作為例子,IE中之所
14. 流、文件和IO
字符流 區分 demo otto 成功 forest art 找到 創建 前言 InputStream/OutStream流用來處理設備之間的數據傳輸 Java.io 包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。 Java.io 包中的流支持
第二周第三節、文件和目錄權限,更改所有者和所屬組, umask及隱藏權限lsattr / chatt
2018-03-28文件權限的管理 ls -l中顯示的內容如下: -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc 10個字符確定不同用戶能對文件幹什麽 第一個字符代表文件(-),目錄(d),鏈接(l) 其余字符每3個一組(rwx) 讀(r) 寫(w) 執行(
JVM基礎學習之類的加載、鏈接和初始化
條件 希望 運行 ring get 準備 AR return 復雜 本文我們一起討論Java類的加載、鏈接和初始化。 Java字節代碼的表現形式是字節數組(byte[]),而Java類在JVM中的表現形式是 java.lang.Class類 的對象。一個Java類從字節
js獲取當前域名、Url、相對路徑和引數以及指定引數 js獲取當前域名、Url、相對路徑和引數以及指定引數
js獲取當前域名、Url、相對路徑和引數以及指定引數 一、js獲取當前域名有2種方法 二、獲取當前Url的4種方法
八、資料驅動和初始化
前端框架解決的根本問題就是資料和ui同步的問題,vue很好的額解決了那個問題。也就是Vue.js 一個核心思想是資料驅動。所謂資料驅動,是指檢視是由資料驅動生成的,我們對檢視的修改,不會直接操作 DOM,而是通過修改資料。通過分析來弄清楚模板和資料如何渲染成最終的 DOM。 new Vue 發生了什麼 從
設定一個全域性變數解決套件的初始化裡面變數沒辦法存下來的問題
測試套件目錄 執行結束後,要和執行前一致 測試套件檔案 執行結束後,要和執行前一致 測試套件用例 執行結束後,要和執行前一致 核心就是為了設定一個全域性變數,解決了棘手的問題:套件的初始化話,變數沒辦法存下來的問題 還有就是初始化裡面建立的資料要留給後面用,動態產生的東西,就這樣儲存下來給後
C++Primer——《第九章1 》“ 順序容器概述、容器定義和初始化”
目錄 順序容器概述 確定使用哪種順序容器 容器操作 迭代器範圍 迭代器的特性 迭代器的型別 類型別名 begin 和 end 成員 容器定義和初始化 將一個容器初始化為另一個容器的拷貝 列表初始化 (C++11) 與順序容器相關的建構函式 標準
【Axure】Axure RP 9 下載、破解安裝和漢化步驟
目錄 一、Axure RP 9 下載 二、Axure RP 9 安裝 三、Axure RP 9 破解 四、Axure RP 9 漢化 一、Axure RP 9 下載 (1)最新版本 Axure RP 9 下載地址:點選前往下載 (2)漢化包下載、歷史
js獲取當前域名、Url、相對路徑和引數以及指定引數
用 Javascript 可以單獨獲取當前域名、Url、相對路徑和引數,所謂單獨攻取,即域名不包括網頁檔案的路徑和引數、引數不包括域名和網頁檔案路徑,下面分別介紹。 一、js獲取當前域名有2種方法 1、方法一 var domain = document.domain; 2、方法二 va
Badboy錄製回放指令碼,以及設定檢查點和引數化
先使用Badboy錄製腳本回放。 開啟Badboy.exe,預設錄製狀態,搜尋框輸入要錄製的url地址; 錄製完如圖,點選play或play all回放錄製內容; 設定檢查點 選擇檢查點,如搜尋內容,點選tools點選Add Assertion for
深度學習和TensorFlow學習資源(書籍、文件和視訊)
自己學習機器學習有一段時間了,有了一定基礎,學習下深度學習和TensorFlow 彙總下找到的比較好看學習資源,也方便看 深度學習 理論篇–視訊 課程學習的順序是: 1, 神經網路和深度學習 2, 改善深層神經網路:超引數除錯
開源物聯網框架ServerSuperIO 3.0正式釋出(C#),跨平臺:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套裝置驅動跨平臺掛載,附:開發套件和教程。
3.0版本主要更新內容: 1.增加跨平臺能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.統一裝置驅動介面:可以一套裝置驅動,跨平臺掛載執行,降低人力成本,提高開發效率。 3.增加二次開發套件:支援控制檯和UI介面兩種方式。 4.增加配置工具:
keras、pytorch模型和引數的儲存
這篇博文主要簡單介紹深度學習框架keras和pytorch的模型儲存方法和模型引數儲存方法。 keras: import keras form keras.models import load_model,Sequential,Model,Input f
【Katalon學習二十九】測試套件和測試用例的設定/拆卸
測試套件和測試用例的設定/拆卸(5.3以上版本支援) 有關Katalon Studio中測試的完整生命週期,請參閱此文件。 現在,您的專案中的每個測試套件都具備了執行SetUp或Teardown方法的能力,這些方法是您自己在執行測試套件之前或之後定義的測試步驟組。這個特性是除了Test Li
C++中的宣告、定義、賦值和初始化
定義:生成資料型別的一個例項。定義某型別的變數或物件時,系統會為該變數或物件分配記憶體。 賦值:讓已經定義好的變數或物件具有某個數值。 初始化:在定義的同時進行賦值。初始化有兩種形式:=和(),前者叫做複製初始化,複製初始化呼叫建構函式建立一個臨時物件,然後將該臨時物件作為