整合 B5 出題趨勢、AAA 測試流程、三大斷言語法、2024/2025 範例實作與教授的 Code Review 與修正版,包含你要提交的 testCase4 完整三行程式碼。
B5 題型固定為 JUnit 測試腳本填空。題目會給出一個含商業邏輯的 Java 類別,並提供一個半完成的 TestCase 類別,要求填寫數個 testCase 方法。熟練 JUnit 基本語法與三大斷言即可快速得分。
| 年度範例 | 題目主題 |
|---|---|
| 2022/2023 | 電子錢包與積分計算 |
| 2023/2024 | 信用卡回饋系統 |
| 2024/2025 | Student 類別的 CA EA 與及格判斷 |
JUnit 測試腳本的標準流程:
Assert.assertEquals(expected, actual);Assert.assertTrue(condition);Assert.assertFalse(condition);選對斷言類型是拿滿分的關鍵:數值用 assertEquals,狀態用 assertTrue/assertFalse。
題目情境:Student 類別有 setCA_mark(int lab, int test) 與
setEA_mark(int assignment, int exam),以及 isPass() 回傳 boolean。CA 計算公式為
lab * 0.4 + test * 0.6。
// Arrange & Act
student1.setCA_mark(65, 40);
// Assert
Assert.assertEquals(50, student1.getCA_mark());
說明:Arrange 設定分數,Act 可與 Arrange 合併,最後用 assertEquals 驗證數值。
題目要求:驗證 Student 4 在 Lab = 40、Test = 50、Assignment = 60、Exam = 70 的情況下會及格。你需要寫出三行程式碼:設定 CA、設定 EA、並驗證 isPass。
Assert.assertTrue 而非 assertEquals。// 1. Arrange and Act
student4.setCA_mark(40, 50);
student4.setEA_mark(60, 70);
// 2. Assert
Assert.assertTrue(student4.isPass());
備註:寫成 Assert.assertTrue(isPass()); 或
Assert.assertTrue(student4.isPass()); 皆可得分。這三行即為完整且正確的 testCase4。