Junit4 简单教程
一、環境搭建
?????? 對于習慣使用Eclipse開發平臺來說,Junit早已是非常通常的插件,在Eclipse開發平臺中,可以非常方便地搭建Junit測試環境。
?????? 1、在Eclipse上創建工程,任何Java工程都行。
???????2、引入Junit的libraries庫,選用Junit4。如下圖所示:
3、新建一個Java類,用于演示Junit4類的自動生成,java代碼如下:
[java]view plaincopy4、在該類上右鍵單擊新建,選JUnit Test Case,自動生成一個對應的測試類,如下圖所示:
4、這樣就能自動地生成對應的測試類了,測試類代碼發下:
5、如此一來,測試類環境的搭建過程就完成了,最后要做的就是,根據實際的業務需求,對測試類中的測試方法編寫單元測試代碼,直到運行調通。
?
二、基本規則
?????? 從上面的演示可知,測試類名一般都以Test結尾,測試方法名以test開頭。這個也是Junit的基本命名規則。
?
三、Junit注解
??????我們此次針對的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并無注解功能。而注解開發基本上被認為是一種優秀的設計,所以我們寫單元測試用例時,盡可能地去了解并使用注解。
?????@Test:使用該注解的方法為測試方法,自動運行時能夠識別并被執行
??????包含兩個參數:expected=XXXException.class 期望出現的異常
???????????????????????????????timeout=xxx 設定程序運行的超時時間
?????@Ignore:被忽略的測試方法
???? @Before:在每個測試方法之前運行
???? @After: 在每個測試方法之后運行
?????@BeforeClass:在所有測試開始之前運行
?????@AfterClass:在所有測試開始之后運行
??
????? 以上幾個就是Junit 4的關鍵注解,熟練使用這幾個注解,將來的測試用例編寫肯定能事半功倍。
?????注意:@Before與@BeforeClass的區別
?????@Before會加在每個方法前執行,即有幾個@Test就會執行幾遍。
???? @BeforeClass 只在所有測試之前執行,只會執行一次。并且@BeforeClass修飾的方法必須是公有的靜態方法(public static )。
?????@After和@AfterClass也類似
???? 每個測試類中這四個注解不能重復使用,一個方法只能從這四個注解中挑選其中一個。
?
四、基本寫法
?????? 1、setUp(),tearDown(),setUpBeforeClass(),tearDownAfterClass()這四個方法其實就是對應的@Before、@BeforeClass、@After、@AfterClass這四個注解,在Junit4開始使用注解時,其實可以替代這四個方法的功能,只是這四個方法是歷史遺留方法,可以考慮使用,也可以直接使用注解替代。
???????2、Assert是單元測試用例的核心,建議使用靜態導入。
?????? 3、待測試對象,一般建議設計成靜態的。
?????? 4、測試方法的要求:帶@Test注解,方法名隨意,返回值必須為void,不能帶有參數,可以聲明異常(可以參考演示代碼)。
?????? 5、Fixture方法的作用
????????????前面介紹的@Before、@BeforeClass、@After、@AfterClass注解修飾的方法,即為Fixture方法,它是在某些階段必然被調用的方法,如注解功能所示。
????????????@Before、@After修飾方法的一個用處是對待測試對象的“復原”操作,如成員變量回歸,數據庫回滾等,目的是消除@Test方法之間的耦合。也可以用來打印日志。
??????????? @BeforeClass修飾方法可以設計成用來加載一些耗時耗力的操作,如文件流的讀取,數據庫連接等,然后在@AfterClass中釋放對應的資源即可。
??????6、限時測試
?????????? @Test(timeout=1000)超時時間單位為毫秒
?????????? 用于測試是否有死循環工是實時性要求比較高的用例,這個非常方便而且非常有用。
??????7、測試異常
??????????? @Test(expected=XXXException.class) XXXException為聲明式異常
??????????? 用來驗證聲明式異常,注意此測試的含義:出現了期望的異常,叫做正常,若沒出現異常,Junit會報錯,認為不正常。這段描述有些拗口,請各位多琢磨琢磨。
????? 8、運行器Runner
??????????? 類注解@RunWith,指定不同的類可以改變測試類的行為
????? 9、參數化測試
??????????? 主要是針對一些相同功能卻要進行多組參數測試的情況,開發步驟如下:
??????????? 1)參數化測試的類和普通測試類不同,要用特殊的Runner,類注解需要改為@RunWith(Parameterized.class)
????????????2)定義該測試類的成員變量,一個放測試參數,另一個放該參數產生的預期結果
??????????? 3)定義測試數據集合方法 public static Collection data() {...},注意該方法要用@Parameters修飾(數據格式為二維數組)
??????????? 4)定義帶參數的構造函數,注意定義數據集合時,要和構造函數參數次序一致
??????????? 其他的與普通測試類似
??????????? 注意:若測試數據有兩條,則該類下的所有@Test的方法都會執行兩次,所以參數化測試的類不要和別的@Test放在一起。參數化測試方法一般建議單獨建立類。
??????????? 演示代碼如下:
[java]view plaincopy?????? 預期的執行結果是前兩組參數測試正確,最后一組測試錯誤,運行后的結果為:
執行結果與預期結果相符合,OK
?
??????10、打包測試
??????????? 將測試類集中起來運行,提高測試效率,代碼如下:
[java]view plaincopy?????????? 1)@Suite.SuiteClasses里面的是需要打包測試的類
?????????? 2)該類中可以為空,類名建議為模塊名+Test結尾,如ModuleTest.java
????? 以上是Junit4的最基本的使用,相信掌握了這些,對于編寫常規的測試用例已經不是難事,同樣,Junit還有更多更有意思的功能等待我們去挖掘……
總結
以上是生活随笔為你收集整理的Junit4 简单教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java连接postgresql数据库
- 下一篇: postgresql 比较两个时间差大于