Java JUnit5中TestName规则的等价物是什么?
如何在JUnit 5中获取测试方法的名称?在测试方法中声明类型为Java JUnit5中TestName规则的等价物是什么?,java,unit-testing,testing,junit,junit5,Java,Unit Testing,Testing,Junit,Junit5,如何在JUnit 5中获取测试方法的名称?在测试方法中声明类型为TestInfo的参数,JUnit将自动为该方法提供一个实例: @测试 void getTestInfo(TestInfo TestInfo){//自动注入 System.out.println(testInfo.getDisplayName()); System.out.println(testInfo.getTestMethod()); System.out.println(testInfo.getTestClass()); S
TestInfo
的参数,JUnit将自动为该方法提供一个实例:
@测试
void getTestInfo(TestInfo TestInfo){//自动注入
System.out.println(testInfo.getDisplayName());
System.out.println(testInfo.getTestMethod());
System.out.println(testInfo.getTestClass());
System.out.println(testInfo.getTags());
}
您可以获取测试方法名称(以及更多)从上面所示的
TestInfo
实例中。除了关于将TestInfo
注入测试方法的内容外,还可以将TestInfo
注入到带有@beforeach
和@AfterEach
注释的方法中,这有时可能有用:
@BeforeEach
void setUp(TestInfo testInfo) {
log.info(String.format("test started: %s", testInfo.getDisplayName());
}
@AfterEach
void tearDown(TestInfo testInfo) {
log.info(String.format("test finished: %s", testInfo.getDisplayName());
}
这很好,但是如果您有稍微复杂的测试,那么您必须将testinfo传递给方法更改,这会使它们变得不必要的复杂@testvoidtest(TestInfo-info){complementdvalidation(info);}``这对于我所面临的情况更有用,因为我们有一个基础测试类,我们的每个其他测试都扩展了这个测试类-在这里将TestInfo变量分配给一个实例方法意味着我们只需要在一个地方添加我们的修复!