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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Junit4 简单教程

發(fā)布時間:2023/12/2 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Junit4 简单教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、環(huán)境搭建

?????? 對于習慣使用Eclipse開發(fā)平臺來說,Junit早已是非常通常的插件,在Eclipse開發(fā)平臺中,可以非常方便地搭建Junit測試環(huán)境。

?????? 1、在Eclipse上創(chuàng)建工程,任何Java工程都行。

???????2、引入Junit的libraries庫,選用Junit4。如下圖所示:

3、新建一個Java類,用于演示Junit4類的自動生成,java代碼如下:

[java]view plaincopy
  • package?com.hy;??
  • ??
  • public?class?Demo?{??
  • ??
  • ????public?void?method1()?{??
  • ????????System.out.println("method1");??
  • ????}??
  • ??
  • ????public?void?method2()?{??
  • ????????System.out.println("method2");??
  • ????}??
  • ??
  • ????public?void?method3()?{??
  • ????????System.out.println("method3");??
  • ????}??
  • ??
  • }??
  • 4、在該類上右鍵單擊新建,選JUnit Test Case,自動生成一個對應(yīng)的測試類,如下圖所示:


    4、這樣就能自動地生成對應(yīng)的測試類了,測試類代碼發(fā)下:

    [java]view plaincopy
  • package?com.hy;??
  • ??
  • import?static?org.junit.Assert.*;??
  • ??
  • import?org.junit.After;??
  • import?org.junit.AfterClass;??
  • import?org.junit.Before;??
  • import?org.junit.BeforeClass;??
  • import?org.junit.Test;??
  • ??
  • public?class?DemoTest?{??
  • ??
  • ????@BeforeClass??
  • ????public?static?void?setUpBeforeClass()?throws?Exception?{??
  • ????}??
  • ??
  • ????@AfterClass??
  • ????public?static?void?tearDownAfterClass()?throws?Exception?{??
  • ????}??
  • ??
  • ????@Before??
  • ????public?void?setUp()?throws?Exception?{??
  • ????}??
  • ??
  • ????@After??
  • ????public?void?tearDown()?throws?Exception?{??
  • ????}??
  • ??
  • ????@Test??
  • ????public?void?testMethod1()?{??
  • ????????fail("Not?yet?implemented");??
  • ????}??
  • ??
  • ????@Test??
  • ????public?void?testMethod2()?{??
  • ????????fail("Not?yet?implemented");??
  • ????}??
  • ??
  • ????@Test??
  • ????public?void?testMethod3()?{??
  • ????????fail("Not?yet?implemented");??
  • ????}??
  • ??
  • }??

  • 5、如此一來,測試類環(huán)境的搭建過程就完成了,最后要做的就是,根據(jù)實際的業(yè)務(wù)需求,對測試類中的測試方法編寫單元測試代碼,直到運行調(diào)通。

    ?

    二、基本規(guī)則

    ?????? 從上面的演示可知,測試類名一般都以Test結(jié)尾,測試方法名以test開頭。這個也是Junit的基本命名規(guī)則。

    ?

    三、Junit注解

    ??????我們此次針對的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并無注解功能。而注解開發(fā)基本上被認為是一種優(yōu)秀的設(shè)計,所以我們寫單元測試用例時,盡可能地去了解并使用注解。

    ?????@Test:使用該注解的方法為測試方法,自動運行時能夠識別并被執(zhí)行

    ??????包含兩個參數(shù):expected=XXXException.class 期望出現(xiàn)的異常

    ???????????????????????????????timeout=xxx 設(shè)定程序運行的超時時間

    ?????@Ignore:被忽略的測試方法

    ???? @Before:在每個測試方法之前運行

    ???? @After: 在每個測試方法之后運行

    ?????@BeforeClass:在所有測試開始之前運行

    ?????@AfterClass:在所有測試開始之后運行
    ??

    ????? 以上幾個就是Junit 4的關(guān)鍵注解,熟練使用這幾個注解,將來的測試用例編寫肯定能事半功倍。

    ?????注意:@Before與@BeforeClass的區(qū)別

    ?????@Before會加在每個方法前執(zhí)行,即有幾個@Test就會執(zhí)行幾遍。

    ???? @BeforeClass 只在所有測試之前執(zhí)行,只會執(zhí)行一次。并且@BeforeClass修飾的方法必須是公有的靜態(tài)方法(public static )。

    ?????@After和@AfterClass也類似

    ???? 每個測試類中這四個注解不能重復(fù)使用,一個方法只能從這四個注解中挑選其中一個。

    ?

    四、基本寫法

    ?????? 1、setUp(),tearDown(),setUpBeforeClass(),tearDownAfterClass()這四個方法其實就是對應(yīng)的@Before、@BeforeClass、@After、@AfterClass這四個注解,在Junit4開始使用注解時,其實可以替代這四個方法的功能,只是這四個方法是歷史遺留方法,可以考慮使用,也可以直接使用注解替代。

    ???????2、Assert是單元測試用例的核心,建議使用靜態(tài)導(dǎo)入。

    ?????? 3、待測試對象,一般建議設(shè)計成靜態(tài)的。

    ?????? 4、測試方法的要求:帶@Test注解,方法名隨意,返回值必須為void,不能帶有參數(shù),可以聲明異常(可以參考演示代碼)。

    ?????? 5、Fixture方法的作用

    ????????????前面介紹的@Before、@BeforeClass、@After、@AfterClass注解修飾的方法,即為Fixture方法,它是在某些階段必然被調(diào)用的方法,如注解功能所示。

    ????????????@Before、@After修飾方法的一個用處是對待測試對象的“復(fù)原”操作,如成員變量回歸,數(shù)據(jù)庫回滾等,目的是消除@Test方法之間的耦合。也可以用來打印日志。

    ??????????? @BeforeClass修飾方法可以設(shè)計成用來加載一些耗時耗力的操作,如文件流的讀取,數(shù)據(jù)庫連接等,然后在@AfterClass中釋放對應(yīng)的資源即可。

    ??????6、限時測試

    ?????????? @Test(timeout=1000)超時時間單位為毫秒

    ?????????? 用于測試是否有死循環(huán)工是實時性要求比較高的用例,這個非常方便而且非常有用。

    ??????7、測試異常

    ??????????? @Test(expected=XXXException.class) XXXException為聲明式異常

    ??????????? 用來驗證聲明式異常,注意此測試的含義:出現(xiàn)了期望的異常,叫做正常,若沒出現(xiàn)異常,Junit會報錯,認為不正常。這段描述有些拗口,請各位多琢磨琢磨。

    ????? 8、運行器Runner

    ??????????? 類注解@RunWith,指定不同的類可以改變測試類的行為

    ????? 9、參數(shù)化測試

    ??????????? 主要是針對一些相同功能卻要進行多組參數(shù)測試的情況,開發(fā)步驟如下:

    ??????????? 1)參數(shù)化測試的類和普通測試類不同,要用特殊的Runner,類注解需要改為@RunWith(Parameterized.class)

    ????????????2)定義該測試類的成員變量,一個放測試參數(shù),另一個放該參數(shù)產(chǎn)生的預(yù)期結(jié)果

    ??????????? 3)定義測試數(shù)據(jù)集合方法 public static Collection data() {...},注意該方法要用@Parameters修飾(數(shù)據(jù)格式為二維數(shù)組)

    ??????????? 4)定義帶參數(shù)的構(gòu)造函數(shù),注意定義數(shù)據(jù)集合時,要和構(gòu)造函數(shù)參數(shù)次序一致

    ??????????? 其他的與普通測試類似

    ??????????? 注意:若測試數(shù)據(jù)有兩條,則該類下的所有@Test的方法都會執(zhí)行兩次,所以參數(shù)化測試的類不要和別的@Test放在一起。參數(shù)化測試方法一般建議單獨建立類。

    ??????????? 演示代碼如下:

    [java]view plaincopy
  • //指定@RunWith??
  • @RunWith(Parameterized.class)??
  • public?class?ParamTest?{??
  • ??
  • ????//定義成員變量,i為測試參數(shù),j為測試結(jié)果??
  • ????private?int?i;??
  • ????private?int?j;??
  • ??
  • ????//構(gòu)造函數(shù)??
  • ????public?ParamTest(int?i,?int?j)?{??
  • ????????super();??
  • ????????this.i?=?i;??
  • ????????this.j?=?j;??
  • ????}??
  • ??
  • ????//測試數(shù)據(jù)集合,注意使用的注解,數(shù)據(jù)結(jié)構(gòu)及次序??
  • ????@Parameters??
  • ????public?static?Collection?data()?{??
  • ????????return?Arrays.asList(new?Object[][]{{1,2},{3,4},{4,6}});??
  • ????}??
  • ????@Test??
  • ????public?void?testMethod1()?{??
  • ????????System.out.println(i);??
  • ????????System.out.println(j);??
  • ????????//簡單測試,只測試參數(shù)加1會不會等于預(yù)期結(jié)果??
  • ????????Assert.assertEquals(i+1,?j);??
  • ????}??
  • }??
  • ?????? 預(yù)期的執(zhí)行結(jié)果是前兩組參數(shù)測試正確,最后一組測試錯誤,運行后的結(jié)果為:

    執(zhí)行結(jié)果與預(yù)期結(jié)果相符合,OK

    ?

    ??????10、打包測試

    ??????????? 將測試類集中起來運行,提高測試效率,代碼如下:

    [java]view plaincopy
  • @RunWith(Suite.class)??
  • @Suite.SuiteClasses({??
  • ????DemoTest.class??
  • })??
  • public?class?ModuleTest?{??
  • ??
  • ????public?ModuleTest()?{??
  • ????????//?TODO?Auto-generated?constructor?stub??
  • ????}??
  • ??
  • }??
  • ?????????? 1)@Suite.SuiteClasses里面的是需要打包測試的類

    ?????????? 2)該類中可以為空,類名建議為模塊名+Test結(jié)尾,如ModuleTest.java

    ????? 以上是Junit4的最基本的使用,相信掌握了這些,對于編寫常規(guī)的測試用例已經(jīng)不是難事,同樣,Junit還有更多更有意思的功能等待我們?nèi)ネ诰颉?/p>

    總結(jié)

    以上是生活随笔為你收集整理的Junit4 简单教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。