神替每一個選擇寫好了結局,他向我們提出了問題,是我們選擇了結局 --《孤單又燦爛的神——鬼怪》
根據上一篇已經寫完的Entity,我們要為它撰寫基本的單元測試,我們這次使用 JUnit 5 來進行單元測試。
單元測試(Unit testing )又稱為模組測試,是針對程式模組(軟體設計的最小單位)來進行邏輯正確性驗證,通常是由開發人員自己撰寫,自己寫的程式自己測!
使用單元測試可以幫助我們驗證撰寫程式是否符合實際結果,而其實撰寫單元測試通常會額外花費大量的時間,不過若我們都有確實實施,它是可以為我們帶來許多好處的,例如我們為新需求撰寫程式碼時,可以利用單元測試檢查新程式碼是否會造成先前的程式出現異常,避免更版後出現許多問題,讓我們可以即時發現問題。
我們在撰寫測試時,可以參考 3A 原則進行測試撰寫,規範如下:
以下是一個簡單的測試範例:
在 Java 領域裡 JUnit 是最多人使用的測試套件,用於開發平台上運行的測試框架API,而Junit 版本又可分為 Jupiter 版本與 Vintage 版本,說明如下:
這次專案使用的JUnit 5(支持Java 8以上),但是我們一開始建置Spring Boot 專案時,spring-boot-starter-test
這個dependency預設會import Junit 4
,所以我們要排除Junit 4
並加入Junit 5
先在pom.xml
移除JUnit 4
<!-- exclude junit 4 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
加入JUnit 5
<!-- add junit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
接下來,我們要前一篇文章的Todo Entity撰寫基本的單元測試
ToDoEntityTest.java
@Test
這個方法,使它執行為一個測試案例,在org.junit.jupiter.api
裡assertEquals
判斷實際值是否符合預期值(1)底下為測試 Todo Entity 是否有正確設定值
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestTodoEntity {
@Test
public void whenGetId_ThenSetId() {
Todo todo = new Todo();
todo.setId(1);
Integer expected = 1;
Integer actual = todo.getId();
assertEquals(expected, actual);
}
@Test
public void whenGetTask_ThenSetTask() {
Todo todo = new Todo();
todo.setTask("洗衣服");
String expected = "洗衣服";
String actual = todo.getTask();
assertEquals(expected, actual);
}
@Test
public void whenSetTask_ThenGetTask() {
Todo todo = new Todo();
todo.setStatus(2);
Integer expected = 2;
Integer actual = todo.getStatus();
assertEquals(expected, actual);
}
}
(2)執行測試程式,查看是否成功,在測試方法或類別(左方),點擊綠色的啟動鍵選擇Run "xxxxx" ,如圖示,即可以啟動測試,待程式執行完畢,看到測試是否有成功
(3)測試覆蓋率(Coverage)是軟體測試中的重要指標,運行這些測試用例時覆蓋並且執行了哪些程式碼,亦指原始碼被測試的比例和程度。點擊Class 左方的綠色按鈕選擇Run "xxxxxxxxx" with Coverage,待程式執行完畢,即可看到Todo類別的測試覆蓋率了。