Assertions.assertIterableEquals() 示例

它断言预期的和实际的可迭代对象是非常相等的。
深度相等意味着集合中元素的数量和顺序必须相同;以及迭代元素必须相等。

它还具有 3 个重载方法。

public static void assertIterableEquals(Iterable<?> expected, Iterable> actual)
public static void assertIterableEquals(Iterable<?> expected, Iterable> actual, String message)
public static void assertIterableEquals(Iterable<?> expected, Iterable> actual, Supplier<String> messageSupplier)
@Test
void testCase() 
{
	 Iterable<Integer> listOne = new ArrayList<>(Arrays.asList(1,2,3,4));
	 Iterable<Integer> listTwo = new ArrayList<>(Arrays.asList(1,2,3,4));
	 Iterable<Integer> listThree = new ArrayList<>(Arrays.asList(1,2,3));
	 Iterable<Integer> listFour = new ArrayList<>(Arrays.asList(1,2,4,3));

	//Test will pass
	Assertions.assertIterableEquals(listOne, listTwo);

	//Test will fail
	Assertions.assertIterableEquals(listOne, listThree);

	//Test will fail
	Assertions.assertIterableEquals(listOne, listFour);
}

Assertions.assertTimeout() 和 Assertions.assertTimeoutPreemptively() 示例

assertTimeout()assertTimeoutPreemptively()都用于测试长时间运行的任务。
如果测试用例中的给定任务花费的时间超过指定的持续时间,则测试将失败。

两种方法的唯一区别在于,在 assertTimeoutPreemptively()中,如果超过超时,Executable或者 ThrowingSupplier的执行将被抢先中止。
assertTimeout()的情况下,Executable或者 ThrowingSupplier不会被中止。

public static void assertTimeout(Duration timeout, Executable executable)
public static void assertTimeout(Duration timeout, Executable executable, String message)
public static void assertTimeout(Duration timeout, Executable executable, Supplier<String> messageSupplier)
public static void assertTimeout(Duration timeout, ThrowingSupplier<T> supplier, String message)
public static void assertTimeout(Duration timeout, ThrowingSupplier<T> supplier, Supplier<String> messageSupplier)
@Test
void testCase() {
	//This will pass
	Assertions.assertTimeout(Duration.ofMinutes(1), () -> {
		return "result";
	});

	//This will fail
	Assertions.assertTimeout(Duration.ofMillis(100), () -> {
		Thread.sleep(200);
		return "result";
	});

	//This will fail
	Assertions.assertTimeoutPreemptively(Duration.ofMillis(100), () -> {
		Thread.sleep(200);
		return "result";
	});
}

Assertions.assertLinesMatch() 示例

它断言预期的字符串列表与实际列表匹配。
将一个字符串与另一个字符串匹配的逻辑是:

  • 检查是否expected.equals(actual)- 如果是,继续下一对
  • 否则将 expected视为正则表达式并通过
    String.matches(String)检查 - 如果是,则继续下一对
  • 否则检查“预期”行是否是快进标记,如果是,则相应地应用
    快进实际行并转到 1.

有效的快进标记是以“>>”开头和结尾的字符串,并且至少包含 4 个字符。
快进文字之间的任何字符都将被丢弃。

>>>>
>> stacktrace >>
>> single line, non Integer.parse()-able comment >>

Assertions.assertArrayEquals() 示例

assertEquals()类似,assertArrayEquals() 对数组执行相同的操作,例如:断言预期数组和实际数组相等。
它还具有针对不同数据类型的重载方法,例如boolean[]char[]int[]等。
它还支持传递错误消息以在测试失败时打印。
例如

public static void assertArrayEquals(int[] expected, int[] actual)
public static void assertArrayEquals(int[] expected, int[] actual, String message)
public static void assertArrayEquals(int[] expected, int[] actual, Supplier<String> messageSupplier)
void testCase() 
{
	//Test will pass
	Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,2,3}, "Array Equal Test");

	//Test will fail because element order is different
	Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,3,2}, "Array Equal Test");

	//Test will fail because number of elements are different
	Assertions.assertArrayEquals(new int[]{1,2,3}, new int[]{1,2,3,4}, "Array Equal Test");
}

Assertions.fail() 示例

fail()方法只是没有通过测试。
它有以下重载方法:

public static void fail(String message)
public static void fail(Throwable cause)
public static void fail(String message, Throwable cause)
public static void fail(Supplier<String> messageSupplier)
public class AppTest {
	@Test
	void testCase() {
		Assertions.fail("not found good reason to pass");
		Assertions.fail(AppTest::message);
	}

	private static String message () {
		return "not found good reason to pass";
	}
}

Assertions.assertTrue() 和 Assertions.assertFalse() 示例

assertTrue()断言提供的条件为真或者BooleanSupplier提供的布尔条件为真。
类似地,assertFalse()断言提供的条件为 false 。
它有以下重载方法:

public static void assertTrue(boolean condition)
public static void assertTrue(boolean condition, String message)
public static void assertTrue(boolean condition, Supplier<String> messageSupplier)
public static void assertTrue(BooleanSupplier booleanSupplier)
public static void assertTrue(BooleanSupplier booleanSupplier, String message)
public static void assertTrue(BooleanSupplier booleanSupplier, Supplier<String> messageSupplier)
public static void assertFalse(boolean condition)
public static void assertFalse(boolean condition, String message)
public static void assertFalse(boolean condition, Supplier<String> messageSupplier)
public static void assertFalse(BooleanSupplier booleanSupplier)
public static void assertFalse(BooleanSupplier booleanSupplier, String message)
public static void assertFalse(BooleanSupplier booleanSupplier, Supplier<String> messageSupplier)
@Test
void testCase() {
	boolean trueBool = true;
	boolean falseBool = false;
	Assertions.assertTrue(trueBool);
	Assertions.assertTrue(falseBool, "test execution message");
	Assertions.assertTrue(falseBool, AppTest::message);
	Assertions.assertTrue(AppTest::getResult, AppTest::message);

	Assertions.assertFalse(falseBool);
	Assertions.assertFalse(trueBool, "test execution message");
	Assertions.assertFalse(trueBool, AppTest::message);
	Assertions.assertFalse(AppTest::getResult, AppTest::message);
}
private static String message () {
	return "Test execution result";
}
private static boolean getResult () {
	return true;
}
JUnit断言示例

JUnit 5 断言有助于使用测试用例的实际输出来验证预期输出。

Assertions.assertNotNull() 和 Assertions.assertNull() 示例

assertNotNull()断言 actual 不是 null 。
类似地,assertNull()方法断言 actual 是 null 。
两者都有三个重载方法。

public static void assertNotNull(Object actual)
public static void assertNotNull(Object actual, String message)
public static void assertNotNull(Object actual, Supplier<String> messageSupplier)
public static void assertEquals(Object actual)
public static void assertEquals(Object actual, String message)
public static void assertEquals(Object actual, Supplier<String> messageSupplier)
@Test
void testCase() 
{	 
	String nullString = null;
	String notNullString = "onitroad.com";

	//Test will pass
	Assertions.assertNotNull(notNullString);

	//Test will fail
	Assertions.assertNotNull(nullString);

	//Test will pass
	Assertions.assertNull(nullString);
	// Test will fail
	Assertions.assertNull(notNullString);
}

Assertions.assertEquals() 和 Assertions.assertNotEquals() 示例

使用 Assertions.assertEquals()来断言期望值和实际值相等。
assertEquals()有许多针对不同数据类型的重载方法,例如 int、short、float、char 等。
它还支持传递错误消息以在测试失败时打印。
例如

public static void assertEquals(int expected, int actual)
public static void assertEquals(int expected, int actual, String message)
public static void assertEquals(int expected, int actual, Supplier<String< messageSupplier)
void testCase() 
{
	//Test will pass
	Assertions.assertEquals(4, Calculator.add(2, 2));

	//Test will fail 
	Assertions.assertEquals(3, Calculator.add(2, 2), "Calculator.add(2, 2) test failed");

	//Test will fail 
	Supplier&lt;String&gt; messageSupplier  = ()-> "Calculator.add(2, 2) test failed";
	Assertions.assertEquals(3, Calculator.add(2, 2), messageSupplier);
}

类似地,Assertions.assertNotEquals()方法用于断言期望值和实际值不相等。
assertEquals()相比,assertNotEquals()不会重载不同数据类型的方法,但只接受 Object

public static void assertNotEquals(Object expected, Object actual)
public static void assertNotEquals(Object expected, Object actual, String message)
public static void assertNotEquals(Object expected, Object actual, Supplier<String> messageSupplier)
void testCase() 
{
	//Test will pass
	Assertions.assertNotEquals(3, Calculator.add(2, 2));

	//Test will fail 
	Assertions.assertNotEquals(4, Calculator.add(2, 2), "Calculator.add(2, 2) test failed");

	//Test will fail 
	Supplier&lt;String&gt; messageSupplier  = ()-> "Calculator.add(2, 2) test failed";
	Assertions.assertNotEquals(4, Calculator.add(2, 2), messageSupplier);
}
之路教程 https://onitr oad .com

Assertions.assertNotSame() 和 Assertions.assertSame() 示例

assertNotSame()断言预期的和实际的不要引用同一个对象。
. 类似地,assertSame()方法断言预期和实际引用完全相同的对象。
. 两者都有三个重载方法。

public static void assertNotSame(Object actual)
public static void assertNotSame(Object actual, String message)
public static void assertNotSame(Object actual, Supplier<> messageSupplier)
public static void assertSame(Object actual)
public static void assertSame(Object actual, String message)
public static void assertSame(Object actual, Supplier<String> messageSupplier)
@Test
void testCase() 
{	 
	String oroirnalObject = "onitroad.com";
	String cloneObject = oroirnalObject;
	String otherObject = "example.com";

	//Test will pass
	Assertions.assertNotSame(oroirnalObject, otherObject);

	//Test will fail
	Assertions.assertNotSame(oroirnalObject, cloneObject);

	//Test will pass
	Assertions.assertSame(oroirnalObject, cloneObject);
	// Test will fail
	Assertions.assertSame(oroirnalObject, otherObject);
}

Assertions.assertThrows() 示例

它断言所提供的 Executable的执行会抛出 expectedType的异常并返回该异常。

public static <T extends Throwable> T assertThrows(Class<T> expectedType, 
	Executable executable)
@Test
void testCase() {
	Throwable exception = Assertions.assertThrows(IllegalArgumentException.class, () -> {
        throw new IllegalArgumentException("error message");
    });
}
日期:2020-09-17 00:09:53 来源:oir作者:oir