JUnit 5中的TestName规则等效于什么?

时间:2018-08-29 10:09:58

标签: java unit-testing testing junit junit5

如何在JUnit 5中获得测试方法的名称?

3 个答案:

答案 0 :(得分:5)

在测试方法中声明类型为TestInfo的参数,JUnit会自动为该方法提供该参数的实例:

@Test
void getTestInfo(TestInfo testInfo) { // Automatically injected
    System.out.println(testInfo.getDisplayName());
    System.out.println(testInfo.getTestMethod());
    System.out.println(testInfo.getTestClass());
    System.out.println(testInfo.getTags());
}

您可以从TestInfo实例中获得测试方法名称(以及更多),如上所示。

答案 1 :(得分:3)

除了编写有关注入TestInfo来测试方法的文字外,还可以注入TestInfo到用@BeforeEach@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());
}

答案 2 :(得分:2)

我个人更喜欢使用此:

System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());