我希望我的@Before方法知道当前正在执行的测试注释,以便@Before方法可以做各种事情。具体来说,现在我们的@Before总是执行各种初始化步骤,比如重新加载数据库等。我希望能够编写这样的代码:
@Before
void setUp() {
if (testMethod.hasAnnotation(@NeedsDatabase)) {
reloadDatabase();
}
}
我想一个解决方案是使用@Rule进行数据库初始化,但这实现起来很复杂,我们现有的基础架构已经在@setUp中处理了这个问题。我们已经有了一个自定义Runner,如果有帮助,所有测试都会扩展共享基类。
我试着想办法做到这一点,但我不知道JUnit4中有什么可用。
答案 0 :(得分:2)
您可以使用@RunWith注释,并创建自己的ParentRunner来扫描@NeedsDatabase注释并正确处理设置。
答案 1 :(得分:1)
将@Rule与TestWatcher一起使用并实现starting()