JUnit 入門

Java 測試入門

Maria Milusheva

Senior Software Engineer

重點速覽

  • JUnit 是最熱門的 Java 測試函式庫
  • 維護積極且持續更新

JUnit 5 標誌示意圖。

Java 測試入門

撰寫 JUnit 測試

來為 addTwoNumbers() 方法寫一個測試:

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Java 測試入門

JUnit 的 @Test 註解

  • 使用 IDE 或建置工具安裝 JUnit(範例見引用)

  • 每個測試都需要 @Test 註解:

import org.junit.jupiter.api.Test;

@Test 
// Test method will be here

Annotation(註解)-提供給編譯器與框架的特殊中介資料,指示方法的處理方式。註解以 @ 開頭

1 https://www.jetbrains.com/help/idea/junit.html
Java 測試入門

JUnit 測試結構

import org.junit.jupiter.api.Test;

@Test 

void testAddTwoNumbers() {
// Arrange - Given int num1 = 2; int num2 = 2;
// Act - When int actual = addTwoNumbers(num1, num2);
// Assert - Then assertEquals(4, actual); }
Java 測試入門

Assert 陳述

  • 快速比較實際結果與預期結果
  • 若不相符,測試就會失敗
  • 有助於快速發現錯誤與瑕疵

assert 陳述圖示

Java 測試入門

測試結果

看看這段斷言:

assertEquals(4, actual); // 若 actual == 4 則通過

成功時會顯示 Test passed 訊息

若數值不相等,例如 actual = 5

org.opentest4j.AssertionFailedError: expected: <4> but was: <5>

請記住參數順序!JUnit 中第 1 個參數是預期值。

Java 測試入門

溢位的額外測試

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Java 測試入門

JUnit 與測試補充

  • 一個測試可包含多個斷言
  • 所有斷言都成功,測試才會通過
  • 你可以匯入所有斷言:
import org.junit.jupiter.api.Assertions.*;
Java 測試入門

更多補充

  • 以下是自訂的 Datacamp 工具,IDE 不需要使用:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method 允許直接用 method,不必寫 package.Class.method
import static java.lang.Math.max;

...

max(3,5); // 不用寫 Math.max(3, 5)
Java 測試入門

一起來練習吧!

Java 測試入門

Preparing Video For Download...