霍格沃兹测试开发

JUnit5 测试用例断言

霍格沃兹测试开发学社

ceshiren.com

JUnit5 断言

  • 内置断言方法
  • 第三方库断言

内置断言方法

  • 必修
    • assertEquals
    • assertTrue
  • 进阶
    • assertAll
  • 选修
    • assertNotNull
    • assertTimeout
    • assertThrows

assertEquals 实例

package cn.assertionDemo;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;


public class AssertEqualsDemo {

    @Test
    void testAssertEquals() {
        // 第一个参数是预期结果,第二个参数是实际结果
        assertEquals(2, 1 + 1);
    }
}

assertTrue 实例

package cn.assertionDemo;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;


public class AssertTrueDemo {

    @Test
    void testAssertTrueExpression() {
        // 断言对象是表达式
        assertTrue(3 > 1);
    }

    @Test
    void testAssertTrueBoolean() {
        // 断言对象是布尔类型
        assertTrue(true);
    }
}

assertNotNull 实例

package hogwarts;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertNotNull;


public class AssertNotNullDemo {

    @Test
    void testAssertNotNullTrue() {
        // 断言对象如果不是null则返回true
        assertNotNull("hogwarts");
    }

    @Test
    void testAssertNotNullFalse() {
        // 断言对象如果是null则返回false
        assertNotNull(null);
    }
}

assertAll 实例

package cn.assertionDemo;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;


public class AssertAllDemo {

    @Test
    void testAssertAll() {
        // 分组断言
        assertAll("All",
                () -> assertEquals(2, 1 + 1),
                () -> assertEquals(4, 2 + 2)
        );
    }

}

assertTimeout 实例

package cn.assertionDemo;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.time.Duration;
import static java.lang.Thread.sleep;
import static org.junit.jupiter.api.Assertions.assertTimeout;

public class AssertTimeoutDemo {

    @Test
    void testAssertTimeout() {
        // 超时断言
        assertTimeout(Duration.ofSeconds(3), ()->{
            sleep(2000);
        });
    }
}

assertThrows 实例

package cn.assertionDemo;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertThrows;


public class AssertThrowsDemo {

    void fn(int a, int b){
        System.out.println(a / b);
    }

    @Test
    void testAssertThrows() {
        // 异常断言
        assertThrows(ArithmeticException.class, () -> fn(1, 0));
    }
}

第三方库断言

  • Hamcrest
  • AssertJ
  • Truth