• 断言Assertion是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是org.junit.jupiter.api.Assertions的静态方法。检查业务逻辑返回的数据是否合理。所有的测试运行结束以后,会有一个详细的测试报告。
  • JUnit 5 内置的断言可以分成如下几个类别:
  • 简单断言
  • 用来对单个值进行简单的验证。如: | 方法 | 说明 | | —- | —- | | assertEquals | 判断两个对象或两个原始类型是否相等 | | assertNotEquals | 判断两个对象或两个原始类型是否不相等 | | assertSame | 判断两个对象引用是否指向同一个对象 | | assertNotSame | 判断两个对象引用是否指向不同的对象 | | assertTrue | 判断给定的布尔值是否为 true | | assertFalse | 判断给定的布尔值是否为 false | | assertNull | 判断给定的对象引用是否为 null | | assertNotNull | 判断给定的对象引用是否不为 null |
  1. @Test
  2. @DisplayName("simple assertion")
  3. public void simple() {
  4. assertEquals(3, 1 + 2, "simple math");
  5. assertNotEquals(3, 1 + 1);
  6. assertNotSame(new Object(), new Object());
  7. Object obj = new Object();
  8. assertSame(obj, obj);
  9. assertFalse(1 > 2);
  10. assertTrue(1 < 2);
  11. assertNull(null);
  12. assertNotNull(new Object());
  13. }
  • 数组断言

通过 assertArrayEquals 方法来判断两个对象或原始类型的数组是否相等。

  1. @Test
  2. @DisplayName("array assertion")
  3. public void array() {
  4. assertArrayEquals(new int[]{1, 2}, new int[] {1, 2});
  5. }
  • 组合断言

assertAll()方法接受多个 org.junit.jupiter.api.Executable 函数式接口的实例作为要验证的断言,可以通过 lambda 表达式很容易的提供这些断言。

  1. @Test
  2. @DisplayName("assert all")
  3. public void all() {
  4. assertAll("Math",
  5. () -> assertEquals(2, 1 + 1),
  6. () -> assertTrue(1 > 0)
  7. );
  8. }
  • 异常断言

在JUnit4时期,想要测试方法的异常情况时,需要用@Rule注解的ExpectedException变量还是比较麻烦的。而JUnit5提供了一种新的断言方式Assertions.assertThrows(),配合函数式编程就可以进行使用。

  1. @Test
  2. @DisplayName("异常测试")
  3. public void exceptionTest() {
  4. ArithmeticException exception = Assertions.assertThrows(
  5. //扔出断言异常
  6. ArithmeticException.class, () -> System.out.println(1 % 0));
  7. }

快速失败

通过 fail 方法直接使得测试失败。

  1. @Test
  2. @DisplayName("fail")
  3. public void shouldFail() {
  4. fail("This should fail");
  5. }