iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Software Development

關於我和 Spring Boot 變成家人的那件事系列 第 17

Day 17 - UnitTest (1) - 基本介紹及建立測試程式

  • 分享至 

  • xImage
  •  

相信有許多人知道開發有一個重要的環節就是進行測試,不管是透過直接操作功能、打 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 測試框架了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

導入注意

  • 測試程式放到 test 資料夾
  • class 名稱保持原本 class 加上 Test為結尾
  • 測試的 package 結構和原本一致 (下圖紅框及橘框的結構)## 建立一個測試程式

先建立一個Calculator 類別並有一個 add 方法:

public class Calculator {
    public static int add(int x, int y) {
        return x + y;
    }
}

依照前面導入注意在 test 資料夾下面建構與 main 相同的結構,並建立一個 class 並依照對應的命名規則來建立。

或是你使用 intellij 可以對這個個類別或是方法按下 Alt + Insert (Windows) 或 command + N (Mac) 來叫出特殊功能選單並選 test 就可以看到編輯器會自動幫我們建立對應的 package 結構至 test 內,並且可以選擇自動產生哪些對應內部 class 有的方法至新的測試程式內。
https://ithelp.ithome.com.tw/upload/images/20240926/20150977G3JJ1bKSQt.png

建立一個測試程式

先建立一個Calculator 類別並有一個 add 方法:

public class Calculator {
    public static int add(int x, int y) {
        return x + y;
    }
}

依照前面導入注意在 test 資料夾下面建構與 main 相同的結構,並建立一個 class 並依照對應的命名規則來建立。

或是你使用 intellij 可以對這個個類別或是方法按下 Alt + Insert (Windows) 或 command + N (Mac) 來叫出特殊功能選單並選 test 就可以看到編輯器會自動幫我們建立對應的 package 結構至 test 內,並且可以選擇自動產生哪些對應內部 class 有的方法至新的測試程式內。
https://ithelp.ithome.com.tw/upload/images/20240926/20150977bWVt0xm0OU.png

建立測試程式測試 add 方法,要在方法上面加入 @Test 告訴 Spring Boot 這是測試程式

class CalculatorTest {

    @Test
    void testAdd() {
        Calculator calc = new Calculator();
        int x = 1;
        int y = 1;
        
        int result = calc.add(x, y);
        
        assertEquals(2, result);
    }
}

assertEquals() 就是斷言方法,可以幫助我們驗證預期結果,這邊就先確定測是可以正常運行,我們放入第 1 個參數是預期值及第 2 個是實際結果,如果帶入的兩個值相等就會通過測試。
https://ithelp.ithome.com.tw/upload/images/20240926/20150977L9TZTv5s5U.png

如果有寫好多個測試方法想要一次跑完,就可以點選 class 左方的圖示一次執行全部的測試
https://ithelp.ithome.com.tw/upload/images/20240927/20150977h7RY71N0Z7.png

這一篇先完成基本的測試方法建立,下一篇會詳細介紹更多的斷言用法。


Ref:

  • Java 工程師必備!Spring Boot 零基礎入門 (hahow 課程)
  • JUnit 5 User Guide

相關文章也會同步更新我的部落格,有興趣也可以在裡面找其他的技術分享跟資訊。


上一篇
Day 16 - RestTemplate
下一篇
Day 18 - UnitTest (2) - Junit 5 測試方法與斷言應用
系列文
關於我和 Spring Boot 變成家人的那件事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言