在本節中,我們將展示使用JUnit的一個完整的例子。我們將詳細了解如何建立和執行測試,我們將展示如何使用特定的注釋和JUnit斷言。
讓我們建立一個名為 JUnitGuide 的Java專案. 在 src 檔案夾, 我們用滑鼠右鍵單擊並選擇 New -> Package, 創造一個新的包名為: com.yiibai.junit 這裡我們將定位類用於測試。 對於測試類,一個很好的做法就是建立專用於測試的一個新的原始檔夾,這樣的類用於測試以及測試類將在不同的源的檔案夾。 為此,右鍵單擊您的專案,選擇 New -> Source Folder, 命名新的原始檔夾test 並點選 Finish.
可以很容易地看到,在專案中有兩個原始檔夾:
還可以建立一個新的包在新建立的測試檔案夾,名稱為 com.javacodegeeks.junit, 測試類不會在預設包中,我們已經準備好了,現在就開始吧!
右鍵單擊src檔案夾並建立一個新的Java類稱為 FirstDayAtSchool.java. 這個類的公共方法將被測試。
FirstDayAtSchool.java
package com.yiibai.junit; import java.util.Arrays; public class FirstDayAtSchool { public String[] prepareMyBag() { String[] schoolbag = { "Books", "Notebooks", "Pens" }; System.out.println("My school bag contains: " + Arrays.toString(schoolbag)); return schoolbag; } public String[] addPencils() { String[] schoolbag = { "Books", "Notebooks", "Pens", "Pencils" }; System.out.println("Now my school bag contains: " + Arrays.toString(schoolbag)); return schoolbag; } }
要為現有類 FirstDayAtSchool.java 建立一個JUnit測試案例, 在Package Explorer檢視上右鍵單擊並選擇 New → JUnit Test Case. 更改原始檔夾,這樣的類將位於 test 原始檔夾並確保該標誌 New JUnit4 測試選擇。
然後點選 Finish. 如果您的專案不包含JUnit庫在classpath中,下面的訊息會顯示成為將JUnit庫新增到類路徑:
下面,有一個名為:FirstDayAtSchoolTest.java 類,這個測試類的程式碼如下所示:
FirstDayAtSchool.java
package com.yiibai.junit; import static org.junit.Assert.*; import org.junit.Test; public class FirstDayAtSchoolTest { FirstDayAtSchool school = new FirstDayAtSchool(); String[] bag1 = { "Books", "Notebooks", "Pens" }; String[] bag2 = { "Books", "Notebooks", "Pens", "Pencils" }; @Test public void testPrepareMyBag() { System.out.println("Inside testPrepareMyBag()"); assertArrayEquals(bag1, school.prepareMyBag()); } @Test public void testAddPencils() { System.out.println("Inside testAddPencils()"); assertArrayEquals(bag2, school.addPencils()); } }
現在,我們可以通過右擊執行測試測試類用例,選擇 Run As -> JUnit Test.
程式將輸出類似如下所示:
Inside testPrepareMyBag() My school bag contains: [Books, Notebooks, Pens] Inside testAddPencils() Now my school bag contains: [Books, Notebooks, Pens, Pencils]
在JUnit檢視將沒有失敗或錯誤。如果改變其中一個陣列,以便它包含超過預期的元素:
String[] bag2 = { "Books", "Notebooks", "Pens", "Pencils", "Rulers"};
我們再次執行測試類,JUnit檢視將包含一個錯誤:
否則,如果我們再次更改其中一個陣列,讓它包含一個不同的元素:
String[] bag1 = { "Books", "Notebooks", "Rulers" };
我們再次執行測試類,JUnit檢視將再一次失敗: