2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

Junit測(cè)試工具

 印度阿三17 2019-06-04

1、Junit 是什么?

  JUnit是一個(gè)Java語(yǔ)言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開(kāi)發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。

  注意:Junit 測(cè)試也是程序員測(cè)試,即所謂的白盒測(cè)試,它需要程序員知道被測(cè)試的代碼如何完成功能,以及完成什么樣的功能

2、Junit 能做什么?

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

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

3、Junit 的用法

  一、首先下載 Junit jar 包

  二、下載完成之后,在項(xiàng)目中將 下載的 jar 包放進(jìn)去,然后右鍵,Build--->Add Build Path ?即可。

  

?

?  如果你是用 eclipse 開(kāi)發(fā),也可以不用下載那些jar包,eclipse內(nèi)部集成了,我們只需要引入即可:

   ?、佟⑦x中項(xiàng)目,右鍵Build--->Add Library

      

?

    ②、彈出來(lái)的界面,選中 JUnit,點(diǎn)擊 next

      

?

?   ?、?、選中 Junit 的版本,一般我們都用 4.0 以上的。點(diǎn)擊 Finish

?      

?

?  

  三、我們先看下面這個(gè)例子,看一下 Junit 的用法

  ①、編寫(xiě)代碼(需要測(cè)試的類(lèi))

?

public class Calculator {
     
    /**
     * 傳入兩個(gè)參數(shù),求和
     * @param a
     * @param b
     * @return
     */
    public int add(int a,int b){
         
        return a b;
    }
     
    /**
     * 傳入兩個(gè)參數(shù),求差
     * @param a
     * @param b
     * @return
     */
    public int sub(int a,int b){
         
        return a-b;
    }
 
}

  

?

  ②、編寫(xiě)測(cè)試類(lèi)

    一、不用Junit   

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

  那么我們可以看到,不用 Junit 只能寫(xiě)在 main()方法中,通過(guò)運(yùn)行結(jié)果來(lái)判斷測(cè)試結(jié)果是否正確。這里需要測(cè)試的只有兩個(gè)方法,如果有很多方法,那么測(cè)試代碼就會(huì)變得很混亂。

?

    二、使用 Junit(看不懂 Assert.assertEquals()方法沒(méi)關(guān)系,可以自己寫(xiě) if()語(yǔ)句來(lái)判斷)

public class CalculatorTest {
     
    @Test
    //測(cè)試 add()方法
    public void testAdd(){
        Calculator c = new Calculator();
        int result = c.add(1, 2);
        Assert.assertEquals(result, 3);
    }
     
    @Test
    //測(cè)試 sub()方法
    public void testSub(){
        Calculator c = new Calculator();
        int result = c.sub(2, 1);
        Assert.assertEquals(result, 1);
    }
 
}
?

  如何運(yùn)行 Junit呢?鼠標(biāo)放在需要測(cè)試的方法中,右鍵,Run As ---->JUnit Test

  

?

結(jié)果出現(xiàn)如下的綠色橫條,則測(cè)試通過(guò),紅色橫條,則測(cè)試失敗

  

?

那么由上面可以看到,使用 Junit 不需要?jiǎng)?chuàng)建 main() 方法,而且每個(gè)測(cè)試方法一一對(duì)應(yīng),邏輯特別清晰??赡苡凶x者會(huì)問(wèn),這樣寫(xiě)代碼量也并不會(huì)減少啊,那么你接著往下看:

?

首先介紹 Junit 的幾種類(lèi)似于 @Test 的注解:

  1.@Test: 測(cè)試方法

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

  2.@Ignore: 被忽略的測(cè)試方法:加上之后,暫時(shí)不運(yùn)行此段代碼

  3.@Before: 每一個(gè)測(cè)試方法之前運(yùn)行

  4.@After: 每一個(gè)測(cè)試方法之后運(yùn)行

  5.@BeforeClass: 方法必須必須要是靜態(tài)方法(static 聲明),所有測(cè)試開(kāi)始之前運(yùn)行,注意區(qū)分before,是所有測(cè)試方法

  6.@AfterClass: 方法必須要是靜態(tài)方法(static 聲明),所有測(cè)試結(jié)束之后運(yùn)行,注意區(qū)分 @After

?

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

?

public class CalculatorTest {
    Calculator c = null;
     
    @Before
    public void testBeforeClass(){
        c = new Calculator();
    }
    @Test
    //測(cè)試 add()方法
    public void testAdd(){
        int result = c.add(1, 2);
        //Assert.assertEquals(result, 3);
        //等價(jià)于:
        if(result == 3){
            System.out.println("add()方法正確");
        }
    }
     
    @Test
    //測(cè)試 sub()方法
    public void testSub(){
        int result = c.sub(2, 1);
        //Assert.assertEquals(result, 1);
        //等價(jià)于:
        if(result == 1){
            System.out.println("sub()方法正確");
        }
    }
 
}

?

?

  

同理:別的注解用法我們用一個(gè)類(lèi)來(lái)看:

public class JunitTest {
    public JunitTest() {
        System.out.println("構(gòu)造函數(shù)");
    }
 
    @BeforeClass
    public static void beforeClass(){
        System.out.println("@BeforeClass");
    }
     
    @Before
    public void befor(){
        System.out.println("@Before");
    }
     
    @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");
    }
}

?

?

  結(jié)果為:

@BeforeClass
構(gòu)造函數(shù)
@Before
@Test
@After
@AfterClass

?

?

  

注意:編寫(xiě)測(cè)試類(lèi)的原則: 

   ?①測(cè)試方法上必須使用@Test進(jìn)行修飾

? ? ? ? ②測(cè)試方法必須使用public void 進(jìn)行修飾,不能帶任何的參數(shù)

? ? ? ? ③新建一個(gè)源代碼目錄來(lái)存放我們的測(cè)試代碼,即將測(cè)試代碼和項(xiàng)目業(yè)務(wù)代碼分開(kāi)

? ? ? ? ④測(cè)試類(lèi)所在的包名應(yīng)該和被測(cè)試類(lèi)所在的包名保持一致

? ? ? ? ⑤測(cè)試單元中的每個(gè)方法必須可以獨(dú)立測(cè)試,測(cè)試方法間不能有任何的依賴

? ? ? ? ⑥測(cè)試類(lèi)使用Test作為類(lèi)名的后綴(不是必須)

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

小結(jié)

JUnit就是一個(gè)可能幫助你在開(kāi)發(fā)Java程序時(shí)進(jìn)行測(cè)試的框架,在之后的大作業(yè)中,我們有用到JUnit進(jìn)行測(cè)試,主要是單元與集成測(cè)試來(lái)觀察我們的編寫(xiě)的代碼是否滿足我們的需求以及是否可以正確運(yùn)行

  

來(lái)源:http://www./content-4-224801.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多