中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

測試工具 JUnit 4怎么用

發布時間:2021-11-05 18:05:49 來源:億速云 閱讀:157 作者:柒染 欄目:建站服務器

這期內容當中小編將會給大家帶來有關測試工具 JUnit 4怎么用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

介紹

JUnit 4.x 是利用了 Java 5 的特性(Annotation)的優勢,使得測試比起 3.x 版本更加的方便簡單,JUnit 4.x 不是舊版本的簡單升級,它是一個全新的框架,整個框架的包結構已經徹底改變,但 4.x 版本仍然能夠很好的兼容舊版本的測試用例。

使用

先來點實在的,看看代碼中是怎么使用的。其余的待會再說。

下載

  • 下載 JUnit4.8.1.jar 包(這里提供了下載地址)

測試工具 JUnit 4怎么用

加入項目

  • 把 junit4.8.1.jar 文件,加入到項目的 classpath 中。

測試工具 JUnit 4怎么用

對比

在代碼之前,先讓我們看一下 JUnit 4 和 JUnit 3 的區別,看看 JUnit 4 到底簡化了哪些東西。

測試工具 JUnit 4怎么用

演示代碼

[java] view plain copy

  1. <span style="font-family:Microsoft YaHei;">package com.tgb;  

  2.   

  3. import static org.junit.Assert.*;  

  4.   

  5. import org.junit.Ignore;  

  6. import org.junit.Test;  

  7.   

  8.   

  9. public class TestWordDealUtil {  

  10.     // 測試 wordFormat4DB 正常運行的情況  

  11.     @Test  

  12.     public void testWordFarmat4DBNormal() {  

  13.         String target = "employeeInfo";  

  14.         String result = WordDealUtil.wordFormat4DB(target);  

  15.           

  16.         assertEquals("employee_info", result);  

  17.     }  

  18.       

  19.     // 測試 null 時的處理情況  

  20.     @Test(expected=NullPointerException.class)  

  21.     public void testWordFormat4DBNull() {  

  22.         String target = null;  

  23.         String result = WordDealUtil.wordFormat4DB(target);  

  24.           

  25.         assertNull(result);  

  26.     }  

  27.       

  28.     // 測試空字符串的處理情況  

  29.     @Test  

  30.     public void testWordFormat4DBEmpty() {  

  31.         String target = "";  

  32.         String result = WordDealUtil.wordFormat4DB(target);  

  33.           

  34.         assertEquals("", result);  

  35.     }  

  36.       

  37.     // 測試當首字母大寫時的情況  

  38.     //@Ignore  

  39.     @Test  

  40.     public void testWordFormat4DBBegin() {  

  41.         String target = "EmployeeInfo";  

  42.         String result = WordDealUtil.wordFormat4DB(target);  

  43.           

  44.         assertEquals("_employee_info", result);  

  45.     }  

  46.       

  47.     // 測試當尾字母大寫時的情況  

  48.     @Test  

  49.     public void testWordFormat4DBEnd() {  

  50.         String target = "employeeInfoA";  

  51.         String result = WordDealUtil.wordFormat4DB(target);  

  52.           

  53.         assertEquals("employee_info_a", result);  

  54.     }  

  55.       

  56.     // 測試多個相連字母字母大寫時的情況  

  57.     @Test  

  58.     public void testWordFormat4DBTogether() {  

  59.         String target = "employeeAInfo";  

  60.         String result = WordDealUtil.wordFormat4DB(target);  

  61.           

  62.         assertEquals("employee_a_info", result);  

  63.     }  

  64. }  

  65.   

測試工具 JUnit 4怎么用

從圖中可以看出,TestWordDealUtil 測試類中,有6個測試方法,其中有5個測試方法都已經通過,另外一個拋出了 NullPointerException (空指針)異常,需要注意的是,這里并不是單元測試的失敗(Failure),而是測試出現了錯誤(Error)。那么,這兩種有什么區別呢?下面就討論一下這兩者的區別。

JUnit 將測試失敗的情況分為兩種:Failure 和 Error 。 Failure 一般是由單元測試使用的斷言方法判斷失敗引起的,它表示在測試點發現了問題(程序中的 bug);而 Error 則是有代碼異常引起的,這是測試目的之外的發現,它可能產生于測試代碼本身的錯誤(也就是說,編寫的測試代碼有問題),也可能是被測試代碼中的一個隱藏 bug 。不過,一般情況下是第一種情況。

深入

常用注解

  • @Before

初始化方法,在任何一個測試方法執行之前,必須執行的代碼。對比 JUnit 3 ,和 setUp()方法具有相同的功能。在該注解的方法中,可以進行一些準備工作,比如初始化對象,打開網絡連接等。

  • @After

釋放資源,在任何一個測試方法執行之后,需要進行的收尾工作。對比 JUnit 3 ,和 tearDown()方法具有相同的功能。

  • @Test

測試方法,表明這是一個測試方法。在 JUnit 中將會自動被執行。對與方法的聲明也有如下要求:名字可以隨便取,沒有任何限制,但是返回值必須為 void ,而且不能有任何參數。如果違反這些規定,會在運行時拋出一個異常。不過,為了培養一個好的編程習慣,我們一般在測試的方法名上加 test ,比如:testAdd()。

同時,該 Annotation(@Test) 還可以測試期望異常和超時時間,如 @Test(timeout=100),我們給測試函數設定一個執行時間,超過這個時間(100毫秒),他們就會被系統強行終止,并且系統還會向你匯報該函數結束的原因是因為超時,這樣你就可以發現這些 bug 了。而且,它還可以測試期望的異常,例如,我們剛剛的那個空指針異常就可以這樣:@Test(expected=NullPointerException.class)。再來看一下測試結果。

測試工具 JUnit 4怎么用

  • @Ignore

忽略的測試方法,標注的含義就是“某些方法尚未完成,咱不參與此次測試”;這樣的話測試結果就會提示你有幾個測試被忽略,而不是失敗。一旦你完成了相應的函數,只需要把 @Ignore 注解刪除即可,就可以進行正常測試了。當然,這個 @Ignore 注解對于像我這樣有“強迫癥”的人還是大有意義的。每當看到紅色條(測試失敗)的時候就會全身不舒服,感覺無法忍受(除非要測試的目的就是讓它失敗)。當然,對代碼也是一樣,無法忍受那些雜亂不堪的代碼。所以,建議大家都寫漂亮的代碼。這樣人人都喜歡看你的代碼。哎,有強迫癥的人傷不起啊!

  • @BeforeClass

針對所有測試,也就是整個測試類中,在所有測試方法執行前,都會先執行由它注解的方法,而且只執行一次。當然,需要注意的是,修飾符必須是 public static void xxxx ;此 Annotation 是 JUnit 4 新增的功能。

  • @AfterClass

針對所有測試,也就是整個測試類中,在所有測試方法都執行完之后,才會執行由它注解的方法,而且只執行一次。當然,需要注意的是,修飾符也必須是 public static void xxxx ;此 Annotation 也是 JUnit 4 新增的功能,與 @BeforeClass 是一對。

執行順序

所以,在 JUnit 4 中,單元測試用例的執行順序為:

測試工具 JUnit 4怎么用


每一個測試方法的調用順序為:

測試工具 JUnit 4怎么用

規范

最后,在來說說關于測試的規范,這些規范是從編程規則,以及日常的實踐中,由那些大牛們總結出來的。作為后人的我們,在大樹下乘涼的同時,更要遵守這些規則,使得大樹更加茁壯成長。

  • 單元測試代碼應位于單獨的 Source Folder 下

此 Source Folder 通常為 test ,這樣可以方便的管理業務代碼與測試代碼。其實,在項目管理工具 Maven 上已經做了這種規范了。在我們自己寫代碼時,注意一下即可。

測試工具 JUnit 4怎么用

  • 測試類應該與被測試類位于同一 package 下

便于進行管理,同時減少引入帶測試類的麻煩。

測試工具 JUnit 4怎么用

  • 選擇有意義的測試方法名

無論是 JUnit 4 ,還是 JUnit 3 ,單元測試方法名均需使用 test<待測試方法名稱>[概要描述] ,如 public void testDivideDivisorIsZero() ,很容易知道測試方法的含義。

  • 保存測試的獨立性

每項單元測試都必須獨立于其他所有單元測試而運行,因為單元測試需能以任何順序運行。

  • 為暫時未實現的測試代碼忽略(@Ignore)或拋出失敗(fail)

在 JUnit 4 中,可以在測試方法上使用注解 @Ignore 。在 JUnit 3 中,可以在未實現的測試方法中使用 fail("測試方法未實現"); 以告知失敗是因為測試方法未實現。

  • 在調用斷言(assert)方法時給出失敗的原因

在使用斷言方法時,請使用帶有 message 參數的 API ,并在調用時給出失敗時的原因描述,如 assertNotNull("對象為空", new Object())。

上述就是小編為大家分享的測試工具 JUnit 4怎么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依安县| 肥城市| 河津市| 英吉沙县| 奈曼旗| 蓝山县| 阜城县| 高雄县| 安吉县| 镇平县| 台江县| 石家庄市| 哈尔滨市| 齐河县| 海阳市| 枝江市| 浮梁县| 东源县| 闽清县| 广灵县| 文山县| 隆回县| 乌恰县| 巫溪县| 太仆寺旗| 汽车| 丹江口市| 大同县| 平阴县| 二手房| 铜陵市| 刚察县| 化德县| 龙南县| 来凤县| 旬邑县| 兴海县| 大兴区| 赤城县| 建湖县| 许昌县|