在本節中,我們將看到一個簡單的JUnit例子。
先建立一個工程,名稱為:CalculateTest,並在這個工程上點選右鍵,選擇:Build Path -> Add Library -> JUnit ...,如下圖所示:
選擇 JUnit 的庫版本為:JUnit 4,如下圖所示:
整個工程的結構如下:
首先,我們將介紹一個測試類:
Calculate.java
package com.yiibai.junit; public class Calculate { public int sum(int var1, int var2) { System.out.println("相加的值是: " + var1 + " + " + var2); return var1 + var2; } }
在上面的程式碼中,我們可以看到,類有一個公共的方法sum(), 它得到輸入兩個整數,將它們相加並返回結果。在這裡,我們將測試這個方法。為了這個目的,我們將建立另一個類包括方法,將測試之前的類(在此情況下,我們只有一個方法進行測試)中每一個的方法。這是使用的最常見的方式。當然,如果一個方法非常複雜且要擴充套件,我們可以在一個以上的試驗方法來測試這一複雜方法。建立測試用例的詳細資訊將顯示在下面的部分。下面,有一個類是:CalculateTest.java,它具有我們的測試類的角色的程式碼:
CalculateTest.java
package com.yiibai.junit; import static org.junit.Assert.*; import org.junit.Test; public class CalculateTest { Calculate calculation = new Calculate(); int sum = calculation.sum(2, 5); int testSum = 7; @Test public void testSum() { System.out.println("@Test sum(): " + sum + " = " + testSum); assertEquals(sum, testSum); } }
讓我們來解釋一下上面的程式碼。首先,我們可以看到,有一個@Test的註解在 testSum()方法的上方。 這個注釋指示該公共無效(public void)方法它所附著可以作為一個測試用例。因此,testSum()方法將用於測試公開方法 sum() 。 我們還可以觀察一個方法 assertEquals(sum, testsum)。 assertEquals ([String message], object expected, object actual) 方法持有兩個物件作為輸入,並斷言這兩個物件相等。
如果要執行測試類,右鍵點選測試類,並選擇 Run As -> Junit Test, 該程式的輸出將類似於如下:
相加的值是: 2 + 5 @Test sum(): 7 = 7
若要檢視JUnit測試的實際結果,Eclipse IDE提供了JUnit的視窗,它顯示了測試的結果。 在這種情況下測試成功,JUnit 視窗不顯示任何錯誤或失敗,因為我們可以在下面的圖片中看到(Errors 0):
現在,如果我們改變這一行的程式碼:
int testSum = 10;
使整數待測試不相等,則輸出將是:
相加的值是: 2 + 5 @Test sum(): 7 = 10
在JUnit視窗,有一個錯誤將出現,並且會顯示這樣的資訊:
java.lang.AssertionError: expected: but was: at com.yiibai.junit.CalculateTest.testSum(CalculateTest.java:16)