iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0

一、JUnit 是啥鬼

JUnit 是一個 Java 專用的自動化測試框架。
根據chatgpt簡單來說,它是讓我用程式測我的程式的一個東西,就像我平常自己手動打指令測功能一樣,但現在電腦幫我自動測試,還能報告出來「哪些功能壞了」。

二、那它能幹嘛?

以我現在做的這個toy project 為例:
假設我每次改完程式,都得自己開 CLI、打幾十行指令來測:

  1. 新增學生
  2. 查詢學生
  3. 排序
  4. 儲存
  5. 統計平均年齡

這樣根本是a waste of time,而且還會出錯

用 JUnit 後我就可以:

功能: 自動化測試效果:
addStudent() 自動新增後驗證筆數增加
removeByName() 自動檢查該學生是否刪除
updateAgeByName() 自動檢查更新值正確
countStudents() 自動比對資料庫筆數
averageAge() 自動驗證平均值正確

As a result, 我不用再開 CLI 測,按一鍵,JUnit 幫我全部跑完、報告結果。

三、為什麼這麼重要
當我的程式從「toy program」進化成「product」後,
每次改一行程式,都可能讓別的功能壞掉。

在大專案中,Junit 的價值主要有:
功能: 實際價值:
快速驗證改動不壞原本功能 改完一個函式,不用重跑整個系統
團隊協作安全 每個人改不同部分,測試幫你防止互相踩壞功能
自動回歸測試(Regression Test) 改過的錯不會再出現
持續整合(CI/CD)基礎 JUnit 測試可以在 GitHub Actions、Jenkins、GitLab CI 自動執行
增加信任度 你可以跟別人保證:「這套系統的功能都有測過」

四、實際例子(完全generated by chatgpt)
假設你的專案成長到 20 個類別、3000 行程式。
你今天改了一行 updateAgeByName() 的 SQL 語法。
結果你不小心忘記 WHERE,整張表的年齡全變成 20。

如果有 JUnit:

你跑測試 → 馬上出錯

你知道是哪個方法壞了

修好後再次執行 → 全部綠燈 ✅

如果沒 JUnit:

你可能在幾天後才發現資料全壞了 😭

五、JUnit 在「大專案」裡的實際位置

一個專案在長大後,會變成這樣

src/
├── main/
│ └── java/
│ ├── Main.java
│ ├── StudentManager.java
│ └── SqliteStudentRepository.java
└── test/
└── java/
└── StudentManagerTest.java ← 這裡放 JUnit 測試

這樣一來:

主程式專心負責功能

測試程式專心負責驗證

每次在 GitHub push 時,GitHub Actions 自動執行測試
「只有全部通過,才允許 merge」

六、JUnit 的概念重點
概念 說明
Unit Test 測單一方法是否正常
Integration Test 測不同模組之間的互動(例如 StudentManager + SQLite)
Assertions 驗證預期值是否正確(assertEquals, assertTrue)
@BeforeEach / @AfterEach 每次測試前後的初始化與清理動作
Test Coverage 測試覆蓋率,代表你測到多少程式邏輯

七、最實際的效益(一句話總結(一樣generated by chatgpt))
沒有 JUnit,你永遠在「猜」你的程式有沒有壞。
有了 JUnit,你能「證明」你的程式是好的。


上一篇
day 25:加入 SQL 統計功能 COUNT, AVG
下一篇
Day 27: JUnit 安裝,更改成:database 知識補足
系列文
Java 學生管理系統:打造可新增、刪除、修改、搜尋並保存資料的完整 CLI 應用28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言