在 JUnit 5TestInfo
中,作为 JUnit 4 中 TestName 规则的替代品。
从文档中:
TestInfo 用于将有关当前测试或容器的信息注入到 @Test、@RepeatedTest、@ParameterizedTest、@TestFactory、@BeforeEach、@AfterEach、@BeforeAll 和 @AfterAll 方法中。
要检索当前执行的测试的方法名称,您有两个选项: String TestInfo.getDisplayName()
和
Method TestInfo.getTestMethod()
。
仅检索当前测试方法的名称 TestInfo.getDisplayName()
可能还不够,因为测试方法的默认显示名称是methodName(TypeArg1, TypeArg2, ... TypeArg3)
.
复制方法名称@DisplayName("..")
并不是一个好主意。
作为替代方案,您可以使用
TestInfo.getTestMethod()
它返回一个Optional<Method>
对象。
如果检索方法在测试方法中使用,您甚至不需要测试Optional
包装的值。
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.Test;
@Test
void doThat(TestInfo testInfo) throws Exception {
Assertions.assertEquals("doThat(TestInfo)",testInfo.getDisplayName());
Assertions.assertEquals("doThat",testInfo.getTestMethod().get().getName());
}