2011-10-28 30 views
2

我想我的@Before方法知道当前正在执行的测试注释,以便@Before方法可以执行各种操作。特别是,现在我们的@Before总是这样喜欢重装数据库的各种初始化步骤,等等。我想能写这样的代码:在Junit4中,如何根据@Test注释更改@Before行为

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

我想一个解决办法是使用一个@rule数据库初始化,但实现起来会很复杂,我们现有的基础架构已经在@setUp中处理了这一点。我们已经有了一个自定义的Runner,并且所有的测试都会扩展一个共享的基类,

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

+1

有办法做到这一点模仿你的需要,并没有太多不必要的间接添加到代码中。我会保持简单:在任何需要“数据库”的测试中,只需调用一个特殊的setupDB方法即可。这将使测试独立于任何运行它们的外部框架。一般来说,单元测试的DRY策略不会增加太多的价值。 – jayunit100

回答

相关问题