【軟件測試】Junit 理論+實踐 —— 適合初學者的單元測試

一、Junit測試前期準備

1. 什麼是Junit

Junit 是一個基於Java語言實現的單元測試的框架。通過Junit 測試框架就可以對項目中的某個類的方法進行測試。

2. 開啓Junit

本文假設大家都有Java開發經驗,使用IDEA,以下是在maven項目中添加測試類的步驟
步驟一:加入依賴
首先,在pom.xml文件中加入Junit依賴:

 <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.11</version>
 </dependency>

步驟二:下載插件
下載插件:
File ——> Settings ——> Plugins ——> 搜索junit下載以下插件
在這裏插入圖片描述
至此,作爲一個maven項目就可以開始使用Junit框架了

步驟三:開始測試
maven的test文件夾就是用來存放測試類的文件夾,所以對本項目的測試文件都存放在該目錄下。
快捷生成對應類或者方法的測試類:到類名處,按下快捷鍵: CTRL + Shift + T 出現:
在這裏插入圖片描述
進入創建框:
在這裏插入圖片描述
點擊OK後就會在test目錄下創建一個自己定義測試類名稱的測試類,以及勾選的方法。如下:
在這裏插入圖片描述
到這裏,就可以在對應的方法中編寫測試的方法,隨便寫寫:
在這裏插入圖片描述
每個被生成出來的測試方法都有這個可以直接運行的標誌,就不需要通過main方法,而可以直接只運行這一小部分。

基本的簡單實踐後,再來學學理論這一part,將會有更加明朗的認識。

二、JUnit 理論知識

1. Junit可以用來幹什麼?

上面我們以及初步知道JUnit測試框架可以用來編寫一些測試類,但上面只是一個一個的運行測試類,如果在大型項目中,可不可以將所有測試方法統一組裝起來運行呢?當然可以!這就是測試套件和測試運行器。
那如果想在測試中加一些判斷,判斷運行後的結果與期望效果是否一樣,就可以使用斷言。

2. 重要API

JUnit是使用Java語言編寫的一個框架,在使用時,我們需要導入對應的包,調用類的不同API來達到目的。
JUnit中最重要的就是 junit.framework 包,它包含了所有測核心類,最重要的四個類是:

類名 功能
Assert 斷言方法的集合
TestCase 多重測試固定裝置
TestResult 測試結果
TestSuite 組合多個測試方法的套件

(1)Assert類

這個類就是用來判斷程序測試結果和預期結果是否一樣。有很多判斷的方式,只有返回是錯誤,纔會記錄下來:
重點有的方法:

方法 作用
void assertEquals(boolean expected, boolean actual) 檢查兩個變量是否相等
void assertFalse(boolean condition) 檢查條件爲假,不是false就錯誤
void assertNotNull(Object object) 檢查對象不爲空,爲null就錯誤
void assertNull(Object object) 檢查對象爲空,不爲null就錯誤
void assertTrue(boolean condition) 檢查條件爲真

寫個小栗子:

@Test
    public void testAssert() {
        int n = 5;
        String s = "test", s1 = null;
        assertEquals(n,5);
        assertNotEquals(s,"tttt");
        assertFalse(n > 6);
        assertTrue(n == 5);
        assertNotNull(s);
        assertNull(s1);

    }

執行,通過:
在這裏插入圖片描述

(2 )TestCase類

TestCase 類的一些重要方法列式如下:

方法 功能
int countTestCases() 爲被run(TestResult result) 執行的測試案例計數
TestResult createResult() 創建一個默認的 TestResult 對象
String getName() 獲取 TestCase 的名稱
TestResult run() 一個運行這個測試的方便的方法,收集由TestResult 對象產生的結果
void run(TestResult result) 在 TestResult 中運行測試案例並收集結果
void setName(String name) 設置 TestCase 的名稱
void setUp() 每一個測試用例執行前執行
void tearDown() 每一個測試用例執行後再執行
String toString() 返回測試案例的一個字符串表示

舉一個例子:

import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class practice extends TestCase {
    protected double fValue1;
    protected double fValue2;

    @Before
    public void setUp() {
        fValue1= 2.0;
        fValue2= 3.0;
    }

    @Test
    public void testAdd() {
        double ans = fValue1 + fValue2;
    }
	@Test
    public void testMul() {
        double ans = fValue1 * fValue2;
    }
    @After
    public void tearDown() {
        fValue1= 0;
        fValue2= 0;
    }
}

這就是一個簡單的測試類,兩個test測試方法在執行前都會先執行setUp()方法,在執行結束後會執行tearDown()方法。還有兩個相似的是beforeClass() 方法和afterClass() 方法它們都是在最開始/結束執行一次。

(3)TestResult 類

TestResult 類是用來統計收集所有執行測試案例的結果。

TestResult 類的一些重要方法如下:

方法 功能
void addError(Test test, Throwable t) 在錯誤列表中加入一個錯誤
void addFailure(Test test, AssertionFailedError t) 在失敗列表中加入一個失敗
void endTest(Test test) 顯示測試被編譯的這個結果
int errorCount() 獲取被檢測出錯誤的數量
int failureCount() 獲取被檢測出的失敗的數量
void run(TestCase test) 運行 TestCase
int int runCount() 獲得運行測試的數量
void startTest(Test test) 聲明一個測試即將開始
void stop() 標明測試必須停止

(4)TestSuite 類

TestSuite 類是測試的組成部分。它可以將多種測試用例都組合起來一起運行。
TestSuite 類的一些重要方法列式如下:

方法 功能
void addTest(Test test) 在套件中加入測試用例
void addTestSuite(Class<? extends TestCase> testClass) 將類中的測試加到套件中
int countTestCases() 對這個測試即將運行的測試案例進行計數
String getName() 返回套件的名稱
void run(TestResult result) 在 TestResult 中運行測試並收集結果
void setName(String name) 設置套的名稱
int testCount() 返回套中測試的數量
static Test warning(String message) 返回會失敗的測試並且記錄警告信息

來一個例子:
先創建了TestJunit1, TestJunit2, TestJunit3三個測試類,接着創建一個suite套件將它們組合起來一起運行。如下

import junit.framework.*;
public class JunitTestSuite {
   public static void main(String[] a) {
      TestSuite suite = new TestSuite(
      					TestJunit1.class, TestJunit2.class, TestJunit3.class );
      TestResult result = new TestResult();
      suite.run(result);
      System.out.println("Number of test cases = " + result.runCount());
    }
}

如果我們想在某一個測試類中不執行其中一個測試方法,就可以添加@Ignore 註釋,添加後,這個方法就會被忽略而不會執行。

這就是JUnit的簡單入門,如果文章有任何問題歡迎評論指正,希望能幫到你。也歡迎點贊關注一起進步!
參考文章:https://www.w3cschool.cn/junit/fegu1hv3.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章