<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    數(shù)據(jù)加載中……
    Junit4 快速入門

    Junit 概念,原理這里就不說了,有興趣的朋友可以查閱相關(guān)資料,這篇文章主要是為了快速給大家介紹一下junit4的使用 以及與 junit3的區(qū)別,這里默認(rèn)大家對junit3已經(jīng)有些理解了。下面就開始吧:

    1.先寫個簡單的被測試類:

    package test.junit;

    public class BaseClass {

    public String method() {

    return this.getClass().getName();

    }

    }

    2.對于這個類的unit測試,我們先看看在junit3中怎么進行測試的吧:

    package test.junit;

    import junit.framework.TestCase;//引入TestCase

    public class BaseClassTest extends TestCase {//類必須繼承TestCase

    BaseClass baseClass;

    protected void setUp() throws Exception {

    super.setUp();

    baseClass = new BaseClass();

    }

    public void testMethod (){//測試方法必須以test開頭

    //通過assert*來檢驗

    assertTrue(baseClass.method ().equals("test.junit.BaseClass"));

    }

    }

    通過上面這個類,我們對junit3進行一些總結(jié):

    1. 必須引入類TestCaseimport junit.framework.TestCase;),

    2. 必須繼承類TestCase (class BaseClassTest extends TestCase)

    3. 測試方法必須以test開頭(public void testMethod ()

    4. 通過assert*方法來判斷結(jié)果(assertTrue(baseClass.method ().equals("test.junit.BaseClass"));)。

    3. 下面來了解一下junit4里面的內(nèi)部關(guān)系吧,下面來看看我們今天的主角junit4是怎么處理這些的吧:

    package test.junit;

    import org.junit.Test;//引入Test

    import static org.junit.Assert.*;//引入Assert.*

    public class BaseClassTestNew {//這里不用再繼承TestCase類了。

    BaseClass baseClass = new BaseClass();

    @Test public void methodOne(){//名字可以按你自己的愛好。但是必須以@Test開頭

    //還是以assert*來判斷

    assertTrue(baseClass.methodOne().equals("test.junit.BaseClass"));

    }

    }

    看看多么的簡潔,好像少了很多約束,下面通過和junit3的特性進行比較總結(jié)junit4的特性:

    1.必須引入類TestCaseimport junit.framework.TestCase;

    è必須引入類Testimport org.junit.Test;,必須引入類(import static org.junit.Assert.*;

    2.必須繼承類TestCase (class BaseClassTest extends TestCase)

    è不需要

    3.測試方法必須以test開頭(public void testMethod ()

    è不需要,但是類開始的時候要標(biāo)記 @Test

    4.通過assert*方法來判斷結(jié)果(assertTrue(baseClass.method ).equals("test.junit.BaseClass"));)。

    從上面的對比,可以看出junit4junit3的區(qū)別在于:

    去掉與類TestCase的偶聯(lián)性,唯一觸發(fā)TestCase的地方就是在@Test上。

    4.以上就是junit4junit3的區(qū)別與改進,下面再繼續(xù)看看junit4有哪些新增加的功能吧:

    1. @Before @After

    類似于init() destory(),可以將一些初始化和釋放工作放到這里面,每個類都只有一個@Before @After。為了實現(xiàn)這個功能,我們將測試類修改如下:

    import org.junit.Test;

    //新增加兩個類

    import org.junit.Before;

    import org.junit.After;

    import static org.junit.Assert.*;

    public class BaseClassTestNew {

    BaseClass baseClass ; //這里不用進行初始化

    @Before public void runBeforeTest(){

    baseClass = new BaseClass();

    }

    @Test public void method (){

    assertTrue(baseClass.method ().equals("test.junit.BaseClass"));

    }

    @After public void runAfterTest(){

    baseClass.teardownList();

    baseClass = null;

    }

    }

    @Before 方法會在 @Test 之前進行,相反 @After 會在所有方法運行完進行。

    Junit4同時還支持 @BeforeClass @AfterClass,原理一樣,大家可以參考相關(guān)資料。

    2.TimeOut 屬性

    Junit4支持timeout,運用如下:

    a. 首先在被測試類中增加用于測試timeout的方法:

    public void methodTimeOut() {

    try {

    Thread.sleep(50);//50

    System.out.println("methodTimeOut");

    } catch (InterruptedException e) {

    }

    }

    b.看看怎么測試這個方法:

    @Test(timeout=5)

    public void methodTimeOut(){

    baseClass.methodTimeOut();

    }

    1. 增加(timeout=5)這個設(shè)置項

    2. 運行完 沒有輸出methodTimeOut,說明這個方法沒有執(zhí)行完,達到效果。

     

    junit中的assert方法全部放在Assert類中,總結(jié)一下junit類中assert方法的分類。

    1.assertTrue/False([String message,]boolean condition);

        判斷一個條件是true還是false。感覺這個最好用了,不用記下來那么多的方法名。

    2.fail([String message,]);

        失敗,可以有消息,也可以沒有消息。

    3.assertEquals([String message,]Object expected,Object actual);

        判斷是否相等,可以指定輸出錯誤信息。

        第一個參數(shù)是期望值,第二個參數(shù)是實際的值。

        這個方法對各個變量有多種實現(xiàn)。在JDK1.5中基本一樣。

        但是需要主意的是floatdouble最后面多一個delta的值,可能是誤差范圍,不確定這個

    4.assertNotNull/Null([String message,]Object obj);

        判讀一個對象是否非空(非空)

    5.assertSame/NotSame([String message,]Object expected,Object actual);

        判斷兩個對象是否指向同一個對象。看內(nèi)存地址。

    7.failNotSame/failNotEquals(String message, Object expected, Object actual)

        當(dāng)不指向同一個內(nèi)存地址或者不相等的時候,輸出錯誤信息。

        注意信息是必須的,而且這個輸出是格式化過的。

     

     



     

    posted on 2008-03-24 16:12 java flex 結(jié)合 閱讀(543) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品久免费的黄网站| 亚洲AV无码不卡无码| 国产无限免费观看黄网站| 亚洲一区二区在线视频| 黄网址在线永久免费观看| 国产精品hd免费观看| 亚洲伊人久久大香线焦| 亚洲乱人伦精品图片| 国产一级高清免费观看| 91精品啪在线观看国产线免费| 亚洲AV无码成人网站在线观看 | 色视频色露露永久免费观看 | 人人狠狠综合久久亚洲高清| 特级做A爰片毛片免费看无码| 国产 亚洲 中文在线 字幕 | 国产午夜亚洲精品| 国产亚洲福利精品一区| 日韩免费无砖专区2020狼| 精品视频在线免费观看| 国产产在线精品亚洲AAVV| 亚洲黄色高清视频| 亚洲中文字幕无码一区| 色www永久免费视频| 国产精品爱啪在线线免费观看| 狠狠躁狠狠爱免费视频无码| 亚洲日韩一区二区三区| 亚洲免费视频网站| a级亚洲片精品久久久久久久| 思思99re66在线精品免费观看| 大地影院MV在线观看视频免费| 亚洲精品无码高潮喷水A片软| 亚洲国产AV无码专区亚洲AV | 国产男女猛烈无遮挡免费视频 | 中文日韩亚洲欧美制服| 亚洲AV日韩AV高潮无码专区| 亚洲国产精品第一区二区三区| 大学生一级特黄的免费大片视频| 久久午夜夜伦鲁鲁片无码免费| 一级一黄在线观看视频免费| 亚洲AV无码一区二区乱子仑| 亚洲国产精品yw在线观看|