测试用例
测试用例
public class AppTest {
@BeforeAll
static void setup() {
System.out.println("@BeforeAll executed");
}
@BeforeEach
void setupThis() {
System.out.println("@BeforeEach executed");
}
@Tag("DEV")
@Test
void testCalcOne() {
System.out.println("======TEST ONE EXECUTED=======");
Assertions.assertEquals(4, Calculator.add(2, 2));
}
@Tag("PROD")
@Disabled
@Test
void testCalcTwo() {
System.out.println("======TEST TWO EXECUTED=======");
Assertions.assertEquals(6, Calculator.add(2, 4));
}
@AfterEach
void tearThis() {
System.out.println("@AfterEach executed");
}
@AfterAll
static void tear() {
System.out.println("@AfterAll executed");
}
}
测试套件
使用@RunWith(JUnitPlatform.class)
@RunWith(JUnitPlatform.class)
@SelectPackages("test.junit5.examples")
public class JUnit5TestSuiteExample {}
另外,你也可以使用以下注解来过滤测试包、类甚至测试方法。
@IncludePackages 和@ExcludePackages
来过滤包@IncludeClassNamePatterns 和@ExcludeClassNamePatterns
过滤测试类@IncludeTags 和@ExcludeTags
过滤测试方法
@RunWith(JUnitPlatform.class)
@SelectPackages("test.junit5.examples")
@IncludePackages("test.junit5.examples.packageC")
@ExcludeTags("PROD")
public class JUnit5TestSuiteExample {
// ...
}
断言
断言有助于使用测试用例的实际输出验证预期输出。为了保持简单,所有
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<String> messageSupplier = ()-> "Calculator.add(2, 2) test failed";
Assertions.assertNotEquals(4, Calculator.add(2, 2), messageSupplier);
}
假设
public class AppTest {
@Test
void testOnDev() {
System.setProperty("ENV", "DEV");
Assumptions.assumeTrue(
"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::";
}
}