如何在測試類之間從頭開始重新創建內存中測試數據庫的Spring Boot?使Spring Boot重新創建測試數據庫
我有幾個本地集成測試註釋@SpringApplicationConfiguration
和@WebIntegrationTest
改變數據庫狀態。我已經用@DirtiesContext
標出了每一個。我期待創建內存數據庫的代碼將成爲ApplicationContext
生命週期的一部分,因此應該在任何後續測試中創建新代碼。
我可以在日誌中看到Flyway正在嘗試重新應用遷移,並認爲它們已經完成,因爲數據庫尚未清除。
Spring Boot是否在每個ApplicationContext
之外創建內存數據庫並在它們之間共享?有沒有辦法來控制這種行爲?
編輯
從Maven的運行測試時,而不是到Eclipse我也看到奇怪的行爲。我的一個數據庫表正在改變Maven的狀態,但不是在Eclipse中。這可能是一個類加載器的問題?
你希望數據庫完全重新創建或只是恢復到初始狀態測試開始的時候?如果後者,你不能使用[@Rollback](http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/annotation/Rollback.html)來回滾變化。 – ikumen 2015-02-24 17:32:34
感謝您的評論。我希望它們完全放棄,以便在測試之間進行最大限度的隔離。 – 2015-02-24 17:34:05
對於像測試之間重新創建數據庫之類的東西,我以前使用過dbunit。還有一個[spring-dbunit集成](http://springtestdbunit.github.io/spring-test-dbunit/)。 – ikumen 2015-02-24 17:40:04