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 
// 测试方法写在此处

注解(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)语句

  • 快速比较实际结果与期望结果
  • 若不匹配,测试失败
  • 有助于快速发现缺陷与错误

表示断言语句的图形

Java 测试入门

测试结果

考虑以下断言:

assertEquals(4, actual); // 若 actual == 4 则通过

成功时会显示 Test passed 消息

若不相等,例如 actual = 5

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

请记住参数顺序!在 JUnit 中,第一个参数是期望值

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 测试入门

Passons à la pratique !

Java 测试入门

Preparing Video For Download...