2014-07-08 44 views
1

我不确定是否可以这样做,但是我需要根据测试调用不同的@Before方法。是否有可能为此制定一些解决方案?Junit Jmock测试:用于测试的多个@Before

@Before 
performBeforeOne(); 

@Before 
performBeforeTwo(); 

@Test 
callBeforeOneAndExecuteTestOne(); 

@Test 
callBeforeTwoAndExecuteTestTwo(); 

或者我应该只是创建几个方法,并从每个测试手动调用它们?

回答

1

不,您每个生命周期注释只能有一个方法。创建一个复合方法,如果它们太大而无法合并,则调用其他方法。

+0

尽管您可以拥有多个@Before方法。你不能保证他们运行的顺序。 – JamesB

+0

谢谢,我忘了没有命令:(。 –

0

我认为最好的方式来实现这一点(和最清晰的)就是重构你的测试,例如:

@Before 
public void performBeforeForAll() {} 

@Test 
testOne() { 
    testOneBefore(); 
    //.. test execution 
} 

@Test 
testTwo() { 
    testTwoBefore(); 
    //.. test execution 
} 

private void testOneBefore() {} 

private void testTwoBefore() {} 

这样一来,就可以准确地看到每个测试设置才能运行。您可能会发现某些测试共享相同的设置代码,其中您可以使用私有方法来防止重复。