今天就跟大家聊聊有關(guān)利用junit4怎么實現(xiàn)一個單元測試功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

Junit單元測試框架是Java程序開發(fā)必備的測試?yán)鳎F(xiàn)在最常用的就是Junit4了,在Junit4中所有的測試用例都使用了注解的形式,這比Junit3更加靈活與方便。之前在公司的關(guān)于單元測試的培訓(xùn)課程中,講師僅僅講述了Junit4的基本的與生命周期相關(guān)的注解的使用,主要包括@BeforeClass、@Before、@Test、@After、@AfterClass這些注解,這些在應(yīng)付普通簡單的單元測試已經(jīng)足夠,然而有很多更加復(fù)雜且也會經(jīng)常遇到的測試需求依靠這些生命周期注解并不能完成!因此這篇分享將為您呈現(xiàn)Junit4的另一片新大陸,且看陳述…
其實,在單元測試培訓(xùn)課程中,講師并沒有講到Junit4的核心,例如為什么Junit沒有main()方法就能運行(因為我們知道無論是什么程序都必須得有一個程序入口,而它通常是main);在例如Junit的核心組成部分是什么?如何更改Junit在運行單元測試時獲取數(shù)據(jù)和執(zhí)行測試的行為?更具體一點,如果我要為一個需要兩個參數(shù)的方法進(jìn)行測試,如何使用我所提供的參數(shù)的所有排列組合對方法進(jìn)行測試?如果我需要在茫茫的測試用例中只測試與特定類相關(guān)的用例該怎么做…….
在這之前,先糾正一點------Junit4可以直接運行我們的某個方法,沒有main入口函數(shù)是斷然不行的。正如我之前給我們組的一個妹子講Spring的時候告訴她,在測試方法中,對測試方法所在的類添加Spring的 (Compent注解或者為該類的成員變量添加)Resource注解并沒有什么卵用,即Spring根本不會來掃描這個測試類,更不會為這個類注入屬性值。為什么這么說呢?因為Spring是在測試類中由被@Before標(biāo)注的方法所啟動的,這時候,JVM已經(jīng)將此測試類實例化了,而這并不是由Spring實例化的,Spring晚了一步,所以在Spring的容器中并沒有此類的實例。那么Junit4真的有main方法嗎?沒錯,既然它能直接運行我們的方法,那它必然自己為JVM提供了程序入口。其實在org.junit.runner包下,有個JUnitCore.class,其中就有一個 標(biāo)準(zhǔn)的main方法,這就是JUnit入口函數(shù)。如此看來,它其實和我們直接在自己的main方法中跑我們要測試的方法在本質(zhì)上是一樣的。
接下來,我要說的就是Junit測試框架的新大陸,或者說是其核心組件,也正是講師所沒有講到但卻十分有用的東西------Runner,即Junit的運行器!
Runner只是一個抽象類,表示用于運行Junit測試用例的工具,通過它可以運行測試并通知Notifier運行的結(jié)果。通常我們可以在待測方法所在的類之上使用@RunWith注解來為這個測試類指定一個特定的Runner。不過在很多情況下,我們并沒有這么做,那是因為,我們使用了Junit的默認(rèn)Runnner------BlockJunit4ClassRunner。當(dāng)我們不為測試類添加@RunWith注解的時候,其實使用的就是這個Runner,它作為默認(rèn)Runner只為我們提供了基本的基于Junit生命周期的測試注解。而有更多非常規(guī)的測試需求,則需要我們?yōu)闇y試類添加@RunWith注解并指定特定的Runner來完成!下面列出一些比較有用的Runner。
一、Suit------它可以一次生執(zhí)行全面在多個類中的測試用例,例如:
@RunWith(Suite.class)
@SuiteClasses({Person.class, People.class})
public class TestSuitMain{
//雖然這個類是空的,但依然可以運行Junit測試,運行時,它會將Person.class和//People.class中的所有測試用命都執(zhí)行一遍!
}
分享名稱:利用junit4怎么實現(xiàn)一個單元測試功能-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article48/eoihp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站制作、網(wǎng)站內(nèi)鏈、移動網(wǎng)站建設(shè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容