Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

27.3. JUnit 5 断言

		
常用的断言方法
方法				说明
assertEquals	判断两个对象或两个原始类型是否相等
assertNotEquals	判断两个对象或两个原始类型是否不相等
assertSame	判断两个对象引用是否指向同一个对象
assertNotSame	判断两个对象引用是否指向不同的对象
assertTrue	判断给定的布尔值是否为 true
assertFalse	判断给定的布尔值是否为 false
assertNull	判断给定的对象引用是否为 null
assertNotNull	判断给定的对象引用是否不为 null		
		
		

27.3.1. assertArrayEquals

assertArrayEquals 方法的示例

			
	@Test
	@DisplayName("array assertion")
	public void array() {
		assertArrayEquals(new int[]{1, 2}, new int[] {1, 2});
	}			
			
			

27.3.2. assertAll

			
	@Test
    @DisplayName("运行一组断言")
    public void assertAllCase() {
        assertAll("groupAssert",
                () -> assertEquals(2, 1 + 1),
                () -> assertTrue(1 > 0)
        );
    }
			
			

assertThrows

通过 assertThrows 或 expectThrows 来判断是否抛出期望的异常类型

assertThrows 和 expectThrows 方法的示例

			
	@Test
	@DisplayName("throws exception")
	public void exception() {
		assertThrows(ArithmeticException.class, () -> System.out.println(1 / 0));
	}
			
			

27.3.4. fail

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

			
	@Test
	@DisplayName("fail")
	public void shouldFail() {
		fail("This should fail");
	}			
			
			

27.3.5. JUnit 5 前置条件

前置条件(assumptions)类似于断言,不同之处在于不满足的断言会使得测试方法失败,而不满足的前置条件只会使得测试方法的执行终止。前置条件可以看成是测试方法执行的前提,当该前提不满足时,就没有继续执行的必要。

			
	@DisplayName("Assumptions")
	public class AssumptionsTest {
		private final String environment = "DEV";
	 
		 @Test
		 @DisplayName("simple")
		 public void simpleAssume() {
		    assumeTrue(Objects.equals(this.environment, "DEV"));
		    assumeFalse(() -> Objects.equals(this.environment, "PROD"));
		 }
	 
		 @Test
		 @DisplayName("assume then do")
		 public void assumeThenDo() {
		    assumingThat(
		       Objects.equals(this.environment, "DEV"),
		       () -> System.out.println("In DEV")
		    );
		 }
	}			
			
			

assumeTrue 和 assumFalse 确保给定的条件为 true 或 false,不满足条件会使得测试执行终止。assumingThat 的参数是表示条件的布尔值和对应的 Executable 接口的实现对象。只有条件满足时,Executable 对象才会被执行;当条件不满足时,测试执行并不会终止。