org.junit.jupiter.api.Assertions是JUnit 5中用于断言的工具类。它提供了一系列静态方法,用于验证预期结果和实际结果之间的关系。
以下是Assertions类中常用方法的作用和示例:
fail()
- 作用:断言失败,并抛出AssertionError异常。
- 示例:
Assertions.fail("This test should fail");
assertTrue(boolean condition)
- 作用:断言条件为真。
- 示例:
Assertions.assertTrue(5 > 2);
assertFalse(boolean condition)
- 作用:断言条件为假。
- 示例:
Assertions.assertFalse(2 > 5);
assertNull(Object object)
- 作用:断言对象为null。
- 示例:
Object obj = null; Assertions.assertNull(obj);
assertNotNull(Object object)
- 作用:断言对象不为null。
- 示例:
Object obj = new Object(); Assertions.assertNotNull(obj);
assertEquals(expected, actual)
- 作用:断言两个对象相等。
- 示例:
String expected = "Hello"; String actual = "Hello"; Assertions.assertEquals(expected, actual);
assertArrayEquals(expectedArray, actualArray)
- 作用:断言两个数组相等。
- 示例:
int[] expectedArray = {1, 2, 3}; int[] actualArray = {1, 2, 3}; Assertions.assertArrayEquals(expectedArray, actualArray);
assertIterableEquals(expectedIterable, actualIterable)
- 作用:断言两个Iterable对象相等。
- 示例:
List<String> expectedList = Arrays.asList("A", "B", "C"); List<String> actualList = Arrays.asList("A", "B", "C"); Assertions.assertIterableEquals(expectedList, actualList);
assertLinesMatch(expectedLines, actualLines)
- 作用:断言两个字符串列表相匹配。
示例:
List<String> expectedLines = Arrays.asList("Hello", "World"); List<String> actualLines = Arrays.asList("Hello", "World"); Assertions.assertLinesMatch(expectedLines, actualLines);
assertNotEquals(unexpected, actual)
- 作用:断言两个对象不相等。
- 示例:
String unexpected = "Hello"; String actual = "World"; Assertions.assertNotEquals(unexpected, actual);
assertSame(expected, actual)
- 作用:断言两个对象引用相同。
- 示例:
Object obj1 = new Object(); Object obj2 = obj1; Assertions.assertSame(obj1, obj2);
assertNotSame(unexpected, actual)
- 作用:断言两个对象引用不相同。
- 示例:
Object obj1 = new Object(); Object obj2 = new Object(); Assertions.assertNotSame(obj1, obj2);
assertAll(executables…)
- 作用:同时执行多个断言,并抛出合并的失败消息。
- 示例:
Assertions.assertAll("group", () -> Assertions.assertTrue(true), () -> Assertions.assertEquals(5, 5), () -> Assertions.assertNotNull(new Object()) );
assertThrows(expectedExceptionType, executable)
- 作用:断言代码块引发指定的异常。
- 示例:
Assertions.assertThrows(IllegalArgumentException.class, () -> { throw new IllegalArgumentException("Invalid argument"); });
assertTimeout(duration, executable)
- 作用:断言代码块在指定时间内执行完毕。
- 示例:
Assertions.assertTimeout(Duration.ofSeconds(1), () -> { // 代码块在1秒内执行完毕 Thread.sleep(500); });
assertTimeoutPreemptively(duration, executable)
- 作用:断言代码块在指定时间内执行完毕,会中断执行。
- 示例:
Assertions.assertTimeoutPreemptively(Duration.ofSeconds(1), () -> { // 代码块在1秒内执行完毕,即使未完成也会中断执行 Thread.sleep(2000); });
assertInstanceOf(expectedType, obj)
- 作用:断言对象是指定类型的实例。
- 示例:
Object obj = "Hello"; Assertions.assertInstanceOf(String.class, obj);
这些方法可以帮助我们编写更加健壮的测试用例,对于预期结果和实际结果之间的差异进行验证。