日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Junit 单元测试基本使用方法

發布時間:2023/12/15 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 Junit 单元测试基本使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Junit是什么?

JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個。 JUnit有它自己的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit作為單元測試的工具。
JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。

2、Junit有什么用?

我們知道 Junit 是一個單元測試框架,那么使用 Junit 能讓我們快速的完成單元測試。

通常我們寫完代碼想要測試這段代碼的正確性,那么必須新建一個類,然后創建一個 main() 方法,然后編寫測試代碼。如果需要測試的代碼很多呢?那么要么就會建很多main() 方法來測試,要么將其全部寫在一個 main() 方法里面。這也會大大的增加測試的復雜度,降低程序員的測試積極性。而 Junit 能很好的解決這個問題,簡化單元測試,寫一點測一點,在編寫以后的代碼中如果發現問題可以較快的追蹤到問題的原因,減小回歸錯誤的糾錯難度。

3、Junit相比平常的測試方法有什么優點?

1、在實現自動單元測試的情況下可以大大的提高開發的效率。

2、減小回歸錯誤的糾錯難度。

3、減少回歸錯誤造成的時間消耗。

4、Junit的用法

一、首先下載 Junit jar 包

Junit 4.11

二、下載完成之后,在項目中將 下載的 jar 包添加啊進去。

三、下面編寫測試類

package com.nf147.bookstore_ssm.Test;

public class Calculator {
    /**
     * 傳入兩個參數,求和
     * @param a
     * @param b
     * @return
     */
    public int add(int a, int b){
        return a + b;
    }

    /**
     * 傳入兩個參數,求差
     * @param a
     * @param b
     * @return
     */
    public int sub(int a, int b){
        return a - b;
    }
}

1、不用Junit:

package com.nf147.bookstore_ssm.Test;
public class CalculatorTest {
 
    public static void main(String[] args) {
        Calculator c = new Calculator();
        //測試 add()方法
        int result = c.add(1, 2);
        if(result == 3){
            System.out.println("add()方法正確");
        }
         
        //測試 sub()方法
        int result2 = c.sub(2, 1);
        if(result2 == 1){
            System.out.println("sub()方法正確");
        }
         
    }
}

2、使用Junit:

package com.nf147.bookstore_ssm.Test;

import org.testng.Assert;
import org.testng.annotations.Test;

public class Main {

    @Test
    //測試add方法
    public void TestAdd(){
        Calculator c = new Calculator();
        int result = c.add(1,2);
        Assert.assertEquals(result,3);
    }

    @Test
    //測試sub方法
    public void TestSub(){
        Calculator c = new Calculator();
        int result = c.sub(2,1);
        Assert.assertEquals(result,1);
    }
}

從上面兩種方法中,我們可以看出,不使用Junit 要把代碼寫入Main里面,這里只有兩個方法,如果有十幾個方法,代碼就會很亂,如果出錯了也很難尋找錯誤所在地。

接下來我們就運行測試類檢查我們的代碼

如果運行成功,代碼沒有錯誤,我們會出現1、1、0、0,而且顏色是為綠色的

如果運行失敗,會出現1、0、1、0,顏色為紅色,并且會告訴你錯誤的地方在哪,方便我們去修改代碼

那么由上面可以看到,使用 Junit 不需要創建 main() 方法,而且每個測試方法一一對應,邏輯特別清晰。可能有讀者會問,這樣寫代碼量也并不會減少啊,那么你接著往下看:

介紹 Junit 的幾種類似于 @Test 的注解:

  1.@Test: 測試方法

    a)(expected=XXException.class)如果程序的異常和XXException.class一樣,則測試通過
    b)(timeout=100)如果程序的執行能在100毫秒之內完成,則測試通過

  2.@Ignore: 被忽略的測試方法:加上之后,暫時不運行此段代碼

  3.@Before: 每一個測試方法之前運行

  4.@After: 每一個測試方法之后運行

  5.@BeforeClass: 方法必須必須要是靜態方法(static 聲明),所有測試開始之前運行,注意區分@before,是所有測試方法

  6.@AfterClass: 方法必須要是靜態方法(static 聲明),所有測試結束之后運行,注意區分 @After

那么上面的例子,我們可以看到,每個 @Test 方法中都有Calculator c = new Calculator();即類的實例化,那么我們可以將其放入到 @Before 中

package com.nf147.bookstore_ssm.Test;

import org.junit.*;
import org.testng.Assert;

public class Main {
    Calculator c = null;

    @Before
    public void testClass(){
        c = new Calculator();
    }

    @Test
    //測試add方法
    public void TestAdd(){
        int result = c.add(1,2);
        System.out.println("加法");
        Assert.assertEquals(result,3);
    }

    @Test
    //測試sub方法
    public void TestSub(){
        int result = c.sub(2,1);
        Assert.assertEquals(result,1);
    }
}

同理:別的注解用法我們用一個類來看:

package com.nf147.bookstore_ssm.Test;

import org.junit.*;

public class JunitTest {
    public JunitTest() {
        System.out.println("構造函數");
    }

    @Before
    public void befor(){
        System.out.println("@Before");
    }

    @BeforeClass
    public static void beforeClass(){
        System.out.println("@BeforeClass");
    }

    @Test
    public void test(){
        System.out.println("@Test");
    }

    @Ignore
    public void ignore(){
        System.out.println("@Ignore");
    }

    @After
    public void after(){
        System.out.println("@After");
    }

    @AfterClass
    public static void afterClass(){
        System.out.println("@AfterClass");
    }
}

注意:編寫測試類的原則: 

   ①測試方法上必須使用@Test進行修飾

②測試方法必須使用public void 進行修飾,不能帶任何的參數

③新建一個源代碼目錄來存放我們的測試代碼,即將測試代碼和項目業務代碼分開

④測試類所在的包名應該和被測試類所在的包名保持一致

⑤測試單元中的每個方法必須可以獨立測試,測試方法間不能有任何的依賴

⑥測試類使用Test作為類名的后綴(不是必須)

⑦測試方法使用test作為方法名的前綴(不是必須)

總結

以上是生活随笔為你收集整理的Junit 单元测试基本使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。