本文向您展示了如何使用JUnit 5假设来执行条件测试执行。
使用的技术:
- Maven的3.6
- Java 8
- JUnit 5.5.2
1.假设
1.1如果assumeTrue()
条件为true,则运行测试,否则中止测试。
1.2 assumingThat()
更加灵活,它允许部分代码作为条件测试运行。
AssumptionsTest.java
package com.mkyong;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.junit.jupiter.api.Assumptions.assumingThat;
public class AssumptionsTest {
// Output: org.opentest4j.TestAbortedException: Assumption failed: assumption is not true
@DisplayName("Run this if `assumeTrue` condition is true, else aborting this test")
@Test
void testOnlyOnDevEnvElseAbort() {
assumeTrue("DEV".equals(System.getenv("APP_MODE")));
assertEquals(2, 1 + 1);
}
// Output: org.opentest4j.TestAbortedException: Assumption failed: Aborting test: not on developer environment
@DisplayName("Run this if `assumeTrue` condition is true, else aborting this test (Custom Message)")
@Test
void testOnlyOnDevEnvElseAbortWithCustomMsg() {
assumeTrue("DEV".equals(System.getenv("APP_MODE")), () -> "Aborting test: not on developer environment");
assertEquals(2, 1 + 1);
}
@Test
void testAssumingThat() {
// run these assertions always, just like normal test
assertEquals(2, 1 + 1);
assumingThat("DEV".equals(System.getenv("APP_MODE")),
() -> {
// run this only if assumingThat condition is true
assertEquals(2, 1 + 1);
});
// run these assertions always, just like normal test
assertEquals(2, 1 + 1);
}
}
输出量
下载源代码
$ git clone https://github.com/mkyong/junit-examples
$ cd junit5-examples
$检查src / test / java / com / mkyong / AssumptionsTest.java
参考文献
翻译自: https://mkyong.com/junit5/junit-5-assumptions-examples/