UnitTest(1) - Junit 5 基本介紹及建立測試程式
相信有許多人知道開發有一個重要的環節就是進行測試,不管是透過直接操作功能、打 API 或是程式內部執行測是程式等等都是測試的一種,今天要介紹的單元測試就是指測試程式碼最小功能單位的運作。
單元測試目的
- 測試功能運作邏輯
- 確保不會改壞程式
單元測試特性
- 一次只測一個功能點或一個 api
- 可被自動化運行
- 各單元測試互相獨立,不依賴
JUnit 5 介紹
Java 常見的開源測試框架,目前最新版本為 JUnit5,使用了 Java 8 及更高版本的 Java 語言特性。 進行單元測試的可讀性更強,編寫更容易,且可以輕鬆擴充。
版本相容注意
Spring Boot 版本 | 相容的 JUnit 版本 |
---|---|
≤ 2.1 | JUnit 4 |
2.2, 2.3 | JUnit 4、JUnit 5 |
≥ 2.4 | JUnit 5 |
Spring Boot 導入 JUnit
通常只要建立一般 web 的專案就會導入 spring-boot-starter-test 裡面就會包含 Junit 測試框架了
1 | <dependency> |
導入注意
- 測試程式放到 test 資料夾
- class 名稱保持原本 class 加上 Test 為結尾
- 測試的 package 結構和原本一致 (下圖紅框及橘框的結構)## 建立一個測試程式
先建立一個 Calculator 類別並有一個 add 方法:
1 | public class Calculator { |
依照前面導入注意在 test 資料夾下面建構與 main 相同的結構,並建立一個 class 並依照對應的命名規則來建立。
或是你使用 intellij 可以對這個個類別或是方法按下 Alt + Insert (Windows) 或 command + N (Mac) 來叫出特殊功能選單並選 test 就可以看到編輯器會自動幫我們建立對應的 package 結構至 test 內,並且可以選擇自動產生哪些對應內部 class 有的方法至新的測試程式內。
建立一個測試程式
先建立一個 Calculator 類別並有一個 add 方法:
1 | public class Calculator { |
依照前面導入注意在 test 資料夾下面建構與 main 相同的結構,並建立一個 class 並依照對應的命名規則來建立。
或是你使用 intellij 可以對這個個類別或是方法按下 Alt + Insert (Windows) 或 command + N (Mac) 來叫出特殊功能選單並選 test 就可以看到編輯器會自動幫我們建立對應的 package 結構至 test 內,並且可以選擇自動產生哪些對應內部 class 有的方法至新的測試程式內。
建立測試程式測試 add 方法,要在方法上面加入 @Test 告訴 Spring Boot 這是測試程式
1 | class CalculatorTest { |
assertEquals() 就是斷言方法,可以幫助我們驗證預期結果,這邊就先確定測是可以正常運行,我們放入第 1 個參數是預期值及第 2 個是實際結果,如果帶入的兩個值相等就會通過測試。
如果有寫好多個測試方法想要一次跑完,就可以點選 class 左方的圖示一次執行全部的測試
這一篇先完成基本的測試方法建立,下一篇會詳細介紹更多的斷言用法。
Ref:
- Java 工程師必備!Spring Boot 零基礎入門 (hahow 課程)
- JUnit 5 User Guide