在Junit4中,如何根据@Test注释更改@Before行为

时间:2011-10-28 05:50:14

标签: java unit-testing junit4

我希望我的@Before方法知道当前正在执行的测试注释,以便@Before方法可以做各种事情。具体来说,现在我们的@Before总是执行各种初始化步骤,比如重新加载数据库等。我希望能够编写这样的代码:

@Before
void setUp() {
    if (testMethod.hasAnnotation(@NeedsDatabase)) {
        reloadDatabase();
    }
}

我想一个解决方案是使用@Rule进行数据库初始化,但这实现起来很复杂,我们现有的基础架构已经在@setUp中处理了这个问题。我们已经有了一个自定义Runner,如果有帮助,所有测试都会扩展共享基类。

我试着想办法做到这一点,但我不知道JUnit4中有什么可用。

2 个答案:

答案 0 :(得分:2)

您可以使用@RunWith注释,并创建自己的ParentRunner来扫描@NeedsDatabase注释并正确处理设置。

答案 1 :(得分:1)