在JUnit 5中,TestInfo
它可以替代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());
}