JUnit 4:如何在规则中获取测试名称?
JUnit 4: how to get test name inside a Rule?
JUnit 4:如何在 Rule
中获取测试名称?例如,
public class MyRule extends ExternalResource {
@Before
public void before() {
// how to get the test method name to be run?
}
}
如果你只需要一个带有测试名称的@Rule
,不要重新安装轮子,只需使用内置的TestName
@Rule
.
如果您正在尝试构建自己的规则并为其添加一些逻辑,请考虑对其进行扩展。如果这也不是一个选项,您可以将其复制为 implementation.
要回答评论中的问题,与其他 TestRule
一样,ExternalResouce
也有一个 apply(Statement, Description)
方法。您可以通过重写它来添加功能,只需确保调用 super 方法,这样就不会破坏 ExternalResource
功能:
public class MyRule extends ExternalResource {
private String testName;
@Override
public Statement apply(Statement base, Description description) {
// Store the test name
testName = description.getMethodName();
return super.apply(base, description);
}
public void before() {
// Use it in the before method
System.out.println("Test name is " + testName);
}
}
JUnit 4:如何在 Rule
中获取测试名称?例如,
public class MyRule extends ExternalResource {
@Before
public void before() {
// how to get the test method name to be run?
}
}
如果你只需要一个带有测试名称的@Rule
,不要重新安装轮子,只需使用内置的TestName
@Rule
.
如果您正在尝试构建自己的规则并为其添加一些逻辑,请考虑对其进行扩展。如果这也不是一个选项,您可以将其复制为 implementation.
要回答评论中的问题,与其他 TestRule
一样,ExternalResouce
也有一个 apply(Statement, Description)
方法。您可以通过重写它来添加功能,只需确保调用 super 方法,这样就不会破坏 ExternalResource
功能:
public class MyRule extends ExternalResource {
private String testName;
@Override
public Statement apply(Statement base, Description description) {
// Store the test name
testName = description.getMethodName();
return super.apply(base, description);
}
public void before() {
// Use it in the before method
System.out.println("Test name is " + testName);
}
}