java - 在 JUnit 4 中,有没有一种方法可以在扩展 BlockJUnit4ClassRunner 的自定义运行程序中的所有 @BeforeClass 之前运行一段代码

标签 java junit junit4

我想在扩展 BlockJUnit4ClassRunner 的自定义运行器中调用 @BeforeClass 之前运行一些方法。

我该怎么做?

当重写 runChild 方法时,我发现它按测试方法运行。

protected void runChild(FrameworkMethod child, RunNotifier notifier) {
    System.out.println("a");
    super.runChild(child, notifier);
    System.out.println("b");
}

产生以下输出:

a
test here
b
a
test here
b

最佳答案

你能覆盖 ParentRunner#classBlock ? BlockJUnit4ClassRunner 扩展了 ParentRunner,但不会覆盖 classBlock(或将其标记为 final),因此您仍然应该有权覆盖它。

/**
 * Constructs a {@code Statement} to run all of the tests in the test class.
 * Override to add pre-/post-processing.
 * [snip]
 */
protected Statement classBlock(final RunNotifier notifier) { /* ... */ }

关于java - 在 JUnit 4 中,有没有一种方法可以在扩展 BlockJUnit4ClassRunner 的自定义运行程序中的所有 @BeforeClass 之前运行一段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720758/

相关文章:

groovy - 正确的位置(在Gradle中)放置应在_all_测试用例中运行的代码?

java - 如何用一个 JUnit 方法检查多个异常?

java - 针对特定测试使用不同的参数

java - JUnit 断言是否会被禁用?

java - 如何使用 Gradle 运行 JUnit 测试?

java - Junit 4.11 TemporaryFolder 构造函数与 java.io.File

java - 将 Linq4j 与内存中基元 List 和 Map 结合使用

java - 工作线程 "steal"如何从另一个工作线程?

java - 在函数中使用字符串参数什么时候好、什么时候不好?

java - 如何重新提示无效 boolean 输入(java)