1. 程式人生 > >JUnit的註解、套件和引數化設定的介紹

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.增加配置工具:

keraspytorch模型引數的儲存

這篇博文主要簡單介紹深度學習框架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++中的宣告定義賦值初始

定義:生成資料型別的一個例項。定義某型別的變數或物件時,系統會為該變數或物件分配記憶體。 賦值:讓已經定義好的變數或物件具有某個數值。 初始化:在定義的同時進行賦值。初始化有兩種形式:=和(),前者叫做複製初始化,複製初始化呼叫建構函式建立一個臨時物件,然後將該臨時物件作為