文
章
目
录
章
目
录
JUnit 5 的Assumptions类提供了一些静态方法,以支持基于假设的条件测试执行。如果假设失败,则会导致测试被中止。
假设通常用于继续执行给定的测试方法没有意义的情况。在测试报告中,这些测试将被标记为已通过。
JUnit Jupiter Assumptions 类有以下方法:
- assumeFalse()
- assumeTrue()
- assumingThat()
1.Assumptions.assumeTrue()
该 assumeTrue() 方法验证给定的假设为 true,如果假设为 true,则继续执行测试;否则,中止测试执行。
它有以下重载方法。
public static void assumeTrue(boolean assumption) throws TestAbortedException
public static void assumeTrue(boolean assumption, Supplier<String> messageSupplier) throws TestAbortedException
public static void assumeTrue(boolean assumption, String message) throws TestAbortedException
public static void assumeTrue(BooleanSupplier assumptionSupplier) throws TestAbortedException
public static void assumeTrue(BooleanSupplier assumptionSupplier, String message) throws TestAbortedException
public static void assumeTrue(BooleanSupplier assumptionSupplier, Supplier<String> messageSupplier) throws TestAbortedException
public class AppTest {
@Test
void testOnDev()
{
System.setProperty("ENV", "DEV");
Assumptions.assumeTrue("DEV".equals(System.getProperty("ENV")));
//剩余测试继续执行
}
@Test
void testOnProd()
{
System.setProperty("ENV", "PROD");
Assumptions.assumeTrue("DEV".equals(System.getProperty("ENV")), AppTest::message);
//剩余测试终止执行
}
private static String message () {
return "TEST Execution Failed :: ";
}
}
2. Assumptions.assumeFalse()
该 assumeFalse() 方法验证给定的假设为 false,如果假设为 false,则继续执行测试;否则,中止测试执行。
它与 assumeTrue() 的工作正好相反。
它有以下重载方法。
public static void assumeFalse(boolean assumption) throws TestAbortedException
public static void assumeFalse(boolean assumption, Supplier<String> messageSupplier) throws TestAbortedException
public static void assumeFalse(boolean assumption, String message) throws TestAbortedException
public static void assumeFalse(BooleanSupplier assumptionSupplier) throws TestAbortedException
public static void assumeFalse(BooleanSupplier assumptionSupplier, String message) throws TestAbortedException
public static void assumeFalse(BooleanSupplier assumptionSupplier, Supplier<String> messageSupplier) throws TestAbortedException
public class AppTest {
@Test
void testOnDev()
{
System.setProperty("ENV", "DEV");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")), AppTest::message);
//剩余测试终止执行
}
@Test
void testOnProd()
{
System.setProperty("ENV", "PROD");
Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
//剩余测试继续执行
}
private static String message () {
return "TEST Execution Failed :: ";
}
}
3. Assertions.assumingThat()
此方法执行提供的可执行文件,但仅在提供的假设有效时才执行。
与其他的假设方法不同,此方法不会中止测试。
- 如果假设无效,则此方法不会执行任何操作。
- 如果假设有效但可执行文件抛出异常,则将其视为常规测试失败。抛出的异常将按原样重新抛出,但作为未检查异常屏蔽。
它有以下重载方法。
public static void assumingThat(boolean assumption, Executable executable)
public static void assumingThat(BooleanSupplier assumptionSupplier, Executable executable)
@Test
void testInAllEnvironments() {
assumingThat("DEV".equals(System.getenv("ENV")),
() -> {
//仅在DEV服务器上执行这些断言
assertEquals(2, calculator.divide(4, 2));
});
//在所有环境执行这些断言
assertEquals(42, calculator.multiply(6, 7));
}