一、断言(assertions)
本篇文章介绍的是 org.junit.jupiter.api.Assertions 的断言方法而不是org.springframework.util.Assert
1. 简单断言方法
方法 | 说明 |
---|---|
Assertions.assertEquals | 判断两个对象或两个原始类型是否相等 |
Assertions.assertNotEquals | 判断两个对象或两个原始类型是否不相等 |
Assertions.assertSame | 判断两个对象引用是否指向同一个对象 |
Assertions.assertNotSame | 判断两个对象引用是否指向不同对象 |
Assertions.assertTrue | 判断是否为true |
Assertions.assertFalse | 判断是否为false |
Assertions.assertNull | 判断是否为null |
Assertions.assertNotNull | 判断是否不为null |
2. 数组断言
// 注意:下面这个断言结果为true,比较的是元素是否相等而不是引用地址
Assertions.assertArrayEquals(new int[]{1, 2}, new int[] {1, 2});
3. 组合断言
通过lamda表达式,顺序执行一组断言
Assertions.assertAll(
() -> {Assertions.assertEquals(2, 2)},
() -> {Assertions.assertTrue(1 > 0)}
);
}
4. 异常断言
// 如果执行没有抛出ArithmeticException就会报错
Assertions.assertThrows(ArithmeticException.class, () -> System.out.println(1 % 0));
5. 超时断言
// 方法执行超过1s就会报错
Assertions.assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(500));
6.快速失败
// 执行到此处测试直接失败
Assertions.fail();
二、前置条件(assumptions)
Junit5中前置条件包为 org.junit.jupiter.api.Assumptions
前置条件类似断言,不同之处在于使用断言会看到错误提示,但是前置条件不会,具体可以看下图的示例
@Test
public void test() {
Assertions.assertTrue(false);
}
@Test
public void test2() {
Assumptions.assumeTrue(false);
}
test1 执行结果图
test2执行结果