2014-07-08 45 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() {} 

這樣一來,就可以準確地看到每個測試設置才能運行。您可能會發現某些測試共享相同的設置代碼,其中您可以使用私有方法來防止重複。