1

JUnit 4:如何在 a 中获取测试名称Rule?例如,

public class MyRule extends ExternalResource {

    @Before
    public void before() {
        // how to get the test method name to be run?
    }
}
4

1 回答 1

2

如果您只需要@Rule带有测试名称的 a,请不要重新设计轮子,只需使用内置的.TestName @Rule

如果您正在尝试构建自己的规则来添加一些逻辑,请考虑扩展它。如果这也不是一个选项,你可以复制它的implementation

要回答评论中的问题,就像其他任何问题一样TestRuleExternalResouce也有一个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);
    }
}
于 2020-01-04T07:43:32.393 回答