我希望能夠在集成測試執行之間清除所有數據的數據庫。我的第一個想法是使用@TestExecutionListeners
批註註冊的org.springframework.test.context.support.AbstractTestExecutionListener
在測試之間執行必要的清理。獲取Spring數據MongoDB重新創建索引
在afterTestMethod(TestContext testContext)
方法中,我嘗試從測試上下文獲取數據庫並使用com.mongodb.DB.drop()
方法。這個工作正常,除了它也破壞了Spring Data在第一次綁定我的託管對象時自動創建的索引。
現在我已經訴諸通過收集名稱迭代和調用remove固定如下這樣:
for (String collectionName : database.getCollectionNames()) {
if (collectionIsNotASystemCollection(collectionName)
database.getCollection(collectionName).remove(new BasicDBObject());
}
這工作,達到了預期的結果 - 但它會是不錯的,如果有辦法我可以簡單地刪除數據庫,然後讓Spring Data「重新綁定」並執行與創建所有必要索引時所執行的初始化相同的初始化。這感覺更清潔,更安全...
我試着玩org.springframework.data.mongodb.core.mapping.MongoMappingContext
,但還沒有設法解決,如果有辦法做我想做的。
任何人都可以提供任何指導?