5

正如我之前在stackoverflow上的很多人一样,我想为我的mongodb应用程序做junit-tests。为此,我让一个实例运行,以便我的测试可以连接。但是我想确保在开始测试时数据库处于空状态。

由于我使用的是 spring-mongodb、spring-test 和所有有趣的 spring-things,我希望找到一个为我做这件事的配置,直到现在都没有成功。

任何人都可以给我一个提示如何以干净的方式实现这一点。我的想法是为我做这件事的 InitializingBean。但我对这个解决方案并不满意。有什么建议么?

4

4 回答 4

9

尝试这个:

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

.....
mongoTemplate.getDb().dropDatabase();
于 2013-05-02T12:40:26.260 回答
5

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());
            }
        }
}
于 2015-07-07T16:59:43.647 回答
2

这是未弃用的答案: mongoTemplate.getDb().drop();

于 2020-02-16T15:56:12.583 回答
1

第一的

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

然后

mongo.dropDatabase(mongoDbFactory.getDb().getName());
于 2017-08-22T07:52:40.617 回答