2013-01-12 80 views
3

因爲我之前有很多人在使用stackoverflow,我想爲我的mongodb應用程序做junit測試。爲此我讓一個實例運行,所以我的測試可以連接。但是我想在開始測試時確保數據庫處於空狀態。使用spring-mongodb清除mongodb

由於我使用了spring-mongodb,spring-test和所有有趣的spring-things,我希望找到一個能夠爲我做到這一點的配置,直到現在,我仍然沒有成功。

任何人都可以給我一個提示如何以一種乾淨的方式實現這一點。我的想法是一個InitializingBean,爲我做這個。但我對這個解決方案並不滿意。有什麼建議麼?

+0

對於PHPUnit的我要做的就是創建一個名爲'PHPUnit_tests'新的數據庫,然後我在每次測試中放棄它,Java應該在表示MongoDB數據庫的數據庫類中具有類似的功能。 – Sammaye

回答

5

試試這個:

@Autowired 
org.springframework.data.mongodb.core.MongoTemplate mongoTemplate; 

..... 
mongoTemplate.getDb().dropDatabase(); 
3

mongoTemplate.getDb().dropDatabase(); 可以幫助,如果你不會使用索引。

如果通過spring-data-mongodb使用索引,例如@Index註釋,則dropDatabase()也會丟棄索引。

我的解決辦法是清理文件:

private void cleanUp() { 
     for (String collectionName : mongoTemplate.getCollectionNames()) { 
      if (!collectionName.startsWith("system.")) { 
       mongoTemplate.getCollection(collectionName).remove(new BasicDBObject()); 
      } 
     } 
} 
0

第一

private @Autowired Mongo mongo; 
private @Autowired MongoDbFactory mongoDbFactory; 

然後

mongo.dropDatabase(mongoDbFactory.getDb().getName());