2011-09-27 63 views
0

我在一個擴展了AbstractTestNGSpringContextTests的TestNG Test內寫了一些測試用例。 ApplicationContext已正確設置,我可以在我的測試用例中使用它。TestNG:在多個Test-Classes中使用ApplicationContext

問題是,設置applicationContext可能需要一些時間,我不想爲每個測試類都做這個,因爲這需要一些時間,從我的角度來看這是不必要的。

所以我的問題是:是否可以運行多個TestNG測試類使用相同的Spring ApplicationContext,它只能安裝一次?

感謝和問候, 羅伯特

回答

1

如何使用@BeforeSuite?

+0

謝謝:)我不知道爲什麼我從未偶然發現過特定的註釋。我現在可以使用@BeforeSuite共享我的ApplicationContext和我的Selenium Webdriver以便重複使用。 –

0

一旦TestContext框架加載的測試ApplicationContext中(或WebApplicationContext的),這種情況下將被緩存和該聲明相同的獨特環境中的所有後續測試重用配置在同一個測試套件中。

Spring TestContext框架將應用程序上下文存儲在靜態緩存中。這意味着上下文實際上存儲在一個靜態變量中。換句話說,如果測試在不同的進程中執行,靜態緩存將在每次測試執行之間被清除,這將有效地禁用緩存機制。

爲了從緩存機制中受益,所有測試都必須在相同的進程或測試套件中運行。這可以通過在IDE中將所有測試作爲一個組來執行完成。同樣,當使用Ant,Maven或Gradle等構建框架執行測試時,確保構建框架不在測試之間分叉非常重要。例如,如果Maven Surefire插件的forkMode設置爲always或pertest,則TestContext框架將無法緩存測試類之間的應用程序上下文,因此構建過程的運行速度將顯着降低。

相關問題