Java 中的 JUnit 測試用例:簡單的 JUnit 5.7.1 Hello World 教程與多合一細節
已發表: 2019-10-30
什麼是 JUnit?
JUnit 是一個簡單、強大的開源框架,用於編寫和運行可重複的測試。 我喜歡 JUnit 測試用例。 在我的 Java 項目開發過程中,我廣泛使用 JUnit 進行代碼覆蓋。 它是用於單元測試框架的 xUnit 架構的一個實例。
JUnit 功能包括:
- 用於測試預期結果的斷言
- 用於共享通用測試數據的測試夾具
- 用於運行測試的測試運行器
在本教程中,我將介紹第 1 點和第 3 點。您的項目中需要以下 maven 依賴項。
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
讓我們開始編寫代碼。
第1步
創建項目CrunchifyJunitTest
並指定包com.crunchify.junit
。 這是一個用於快速參考的包結構。

第2步
右鍵單擊CrunchifyJunitTest
=> New Class => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
第三步
輸入@Test後,Eclipse 將建議並自動添加org.junit.Test
依賴項。

第四步
測試您的 JUnit 測試
- 右鍵單擊類
- 點擊運行方式
- 點擊
JUnit Test
你應該看到這樣的東西。

第 5 步
嘗試將方法期望值參數從30 => 300
和Hello World => Hello -- World
更改並再次測試。
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

第 6 步
現在讓我們via other java
程序運行相同的測試用例。 創建CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
第 7 步
CrunchifyRunnerJUnit.java
作為Java Application
運行。
步驟 8
如果是1st code
(正確的預期參數),您應該看到如下輸出:
1 |
Both Tests finished successfully . . . |
第 9 步
如果是2nd code
(不正確的預期參數),您應該看到如下內容:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
你都準備好了。 如果您發現運行此代碼有任何問題,請告訴我。
JUnit 測試用例中可用的註解:
註解 | 描述 |
---|---|
@Test 公共無效方法() | 註釋@Test 標識一個方法是一個測試方法。 |
@Before public void 方法() | 將在每次測試之前執行該方法。 該方法可以準備測試環境(例如讀取輸入數據,初始化類)。 |
@After 公共無效方法() | 每次測試後都會執行該方法。 此方法可以清理測試環境(例如刪除臨時數據、恢復默認值)。 |
@BeforeClass 公共無效方法() | 將在所有測試開始之前執行該方法一次。 這可用於執行時間密集型活動,例如連接到數據庫。 |
@AfterClass 公共無效方法() | 在所有測試完成後將執行該方法一次。 這可用於執行清理活動,例如斷開與數據庫的連接。 |
@忽視 | 將忽略測試方法。 當底層代碼已更改且測試用例尚未調整時,這很有用。 或者如果此測試的執行時間太長而無法包含在內。 |
@Test(預期 = Exception.class) | 如果方法沒有拋出指定的異常,則失敗。 |
@Test(超時=100) | 如果方法花費的時間超過 100 毫秒,則失敗。 |
可用的斷言測試方法:
陳述 | 描述 |
---|---|
失敗(字符串) | 讓方法失敗。 可用於檢查代碼的某個部分是否未到達。 或者在實現測試代碼之前進行失敗的測試。 |
斷言真(真)/斷言真(假) | 永遠是真/假。 如果測試尚未實施,可用於預定義測試結果。 |
assertTrue([消息],布爾條件) | 檢查布爾條件是否為真。 |
assertsEquals([字符串消息],預期,實際) | 測試兩個值是否相同。 注意:對於數組,檢查的是引用而不是數組的內容。 |
assertsEquals([字符串消息],預期,實際,公差) | 測試 float 或 double 值是否匹配。 容差是必須相同的小數位數。 |
assertNull([消息],對象) | 檢查對像是否為空。 |
assertNotNull([消息],對象) | 檢查對像是否不為空。 |
assertSame([String],預期,實際) | 檢查兩個變量是否引用同一個對象。 |
assertNotSame([String],預期,實際) | 檢查兩個變量是否引用不同的對象。 |