我有一些自己的組件,我在我的Java應用程序之前開始。大約需要30秒才能開始。在我的集成測試中,我在類和所有測試用例運行之前啓動我的組件。我的問題是,是否可以在測試課之前運行我的組件,而不是在整個測試之前?Junit爲整個集成測試設置了一次(所有測試類)
親切的問候, 比拉爾
我有一些自己的組件,我在我的Java應用程序之前開始。大約需要30秒才能開始。在我的集成測試中,我在類和所有測試用例運行之前啓動我的組件。我的問題是,是否可以在測試課之前運行我的組件,而不是在整個測試之前?Junit爲整個集成測試設置了一次(所有測試類)
親切的問候, 比拉爾
使用@BeforeClass註釋。
請注意註釋的方法必須是靜態的。
@BeforeClass
public static void oneTimeInit() {
System.out.println("It runs only once for all tests in this class.");
}
如果您使用的是maven,您可以使用maven-failsafe-plugin。它具有用於測試設置的預集成測試目標。舉一個例子來看看Maven Failsafe Plugin: how to use the pre- and post-integration-test phases
聽起來不錯,我會看看這個,謝謝。 – bilal 2014-12-04 13:05:34
如果您使用JUnit套房,你可以使用一個@BeforeClass
執行整個套件運行前的方法和整個套件運行後@AfterClass
:
@RunWith(Suite.class)
@SuiteClasses(
{
//list your test classes here
}
)
public class IntegrationSuite{
@BeforeClass
public static void setupSuite(){
//do your initialization here
}
@AfterClass
public static void tearDownSuite(){
//...if needed
}
}
我的意思是整個整合測試,而不是測試課。我在課前已經使用過,但我有幾個測試類,我想爲所有測試類運行一次。 – bilal 2014-12-04 13:03:00
如果所有這些類都需要非常相同的測試準備,這是相互依賴性過大的標誌。你在使用模擬還是存根? – pablosaraiva 2014-12-04 19:01:50