Mah*_*zad 13 java testing junit unit-testing junit5
如何在JUnit 5中获取测试方法的名称?
Rom*_*val 19
除了关于注入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());
}
Run Code Online (Sandbox Code Playgroud)
Mah*_*zad 11
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());
}
Run Code Online (Sandbox Code Playgroud)
您可以从TestInfo实例中获取测试方法名称(以及更多),如上所示。
在 JUnit 4 中,让测试名称全局可用的另一种方法是使用接口在设置方法中自行填充功能TestInfo。
然后
TestInfo可用于检索有关当前容器或测试的信息,例如显示名称、测试类、测试方法和关联标签。
在这里,我们利用内置解析器将提供与当前容器或测试相对应的实例作为注释为生命周期钩子的方法TestInfo的类型参数值(这里我们使用)。TestInfo@BeforeEach
import org.junit.jupiter.api.TestInfo;
public class MyTestClass {
String displayName;
@BeforeEach
void setUp(TestInfo testInfo) {
displayName = testInfo.getDisplayName();
// ... the rest of your setup
}
}
Run Code Online (Sandbox Code Playgroud)
例如,这使您能够在其他非测试方法(例如各种实用程序方法)中引用当前测试名称,而不必将测试名称作为参数包含到从初始测试方法到该实用程序方法的每个函数调用中。
您可以对有关当前容器或测试的其他信息执行相同的操作。
似乎唯一的缺点是:
final,因为它是动态设置的作为参考,以下是TestName-Rule在 JUnit 4 中的实现方式:
public class MyTestClass {
@Rule
public final TestName name = new TestName();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |