我正在研究一個集中使用集成測試的應用程序,因爲我們使用的核心框架在數據庫上運行。彈性集成測試清理衝突的配置上下文
我有使用配置上下文類如此測試類:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ConfigA.class)
public A_Test(){
}
大多數測試使用相同的上下文等的上方。我們有超過200多個這樣的測試。但最近,我們需要一些使用情況下,一些額外的配置,以及像這樣:現在
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigA.class, ConfigB.class})
public B_Test(){
}
問題是,當我們與Maven,或IDE亞軍,爲ConfigA不再起作用加載緩存執行所有測試。 Spring試圖爲ConfigA重新創建一個上下文,因爲我們已經配置了H2數據庫,並且Spring試圖創建模式,而這些模式卻無法實現。
爲了克服,我們開始在所有測試中使用@DirtiesContext。結果超過1H構建時間,這顯着降低了開發人員的生產力。
問題:是否可以清除像B_Test
這樣的測試的上下文? @DirtiesContext(ClassMode = AFTER_CLASS)沒有幫助,因爲測試的順序不能保證(實際上我們不想這樣)。當B_Test測試的類型最後運行時,它會失敗。相同的@DirtiesContext(ClassMode = BEFORE_CLASS)反之亦然
是否有可能在一堆測試中同時模擬@DirtiesContext(ClassMode = AFTER_CLASS)和@DirtiesContext(ClassMode = BEFORE_CLASS)?
或者還有其他方法可以解決這個問題嗎?
我們試着到目前爲止:
- Junit的套房:沒有什麼幫助與Spring上下文
- ContextHierarchies:沒跟B_Type測試也弄髒的背景下
- 測試的情況下幫助排序:沒有人真的很高興重構所有的測試,使其神奇
能否請您添加您的連接字符串? –