| 知乎专栏 | 多维度架构 |
JUnit 5 常用注解
名称 说明 @Test 表明一个测试方法 @DisplayName 测试类或方法的显示名称 @BeforeEach 表明在单个测试方法运行之前执行的方法 @AfterEach 表明在单个测试方法运行之后执行的方法 @BeforeAll 表明在所有测试方法运行之前执行的方法 @AfterAll 表明在所有测试方法运行之后执行的方法 @Disabled 禁用测试类或方法 @Tag 为测试类或方法添加标签
元注解标签
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("remote")
public @interface Remote {
}
@DisplayName("Remote test")
public class RemoteTest {
@Test
@Remote
public void testGetUser() {
System.out.println("Get user");
}
}
package junit5;
import static org.junit.jupiter.api.Assertions.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@DisplayName("Nested tests for HashMap")
class Junit5NestedTest {
Map<String, Object> map;
@Nested
@DisplayName("when a new")
class WhenNew {
@BeforeEach
void create() {
map = new HashMap<>();
}
@Test
@DisplayName("is empty")
void isEmpty() {
assertTrue(map.isEmpty());
}
@Nested
@DisplayName("after adding a new entry")
class AfterAdd {
String key = "key";
Object value = "value";
@BeforeEach
void add() {
map.put(key, value);
}
@Test
@DisplayName("is not empty")
void isNotEmpty() {
assertFalse(map.isEmpty());
}
@Test
@DisplayName("returns value when getting by key")
void returnValueWhenGettingByKey() {
assertEquals(value, map.get(key));
}
@Nested
@DisplayName("after removing the entry")
class AfterRemove {
@BeforeEach
void remove() {
map.remove(key);
}
@Test
@DisplayName("is empty now")
void isEmpty() {
assertTrue(map.isEmpty());
}
@Test
@DisplayName("returns null when getting by key")
void returnNullForKey() {
assertNull(map.get(key));
}
}
}
}
}
@TestFactory
public Collection<DynamicTest> simpleDynamicTest() {
return Collections.singleton(dynamicTest("simple dynamic test", () -> assertTrue(2 > 1)));
}
DynamicTest 提供了一个静态方法 stream 来根据输入生成动态测试
@TestFactory
public Stream<DynamicTest> streamDynamicTest() {
return stream(
Stream.of("Hello", "World").iterator(),
(word) -> String.format("Test - %s", word),
(word) -> assertTrue(word.length() > 4)
);
}