Java 是否有与MongoDB一起工作的DbUnit替代方案?

Java 是否有与MongoDB一起工作的DbUnit替代方案?,java,mongodb,unit-testing,dbunit,spring-data-mongodb,Java,Mongodb,Unit Testing,Dbunit,Spring Data Mongodb,我正在开发一个使用Spring数据和MongoDB管理持久层的项目。我发现需要用我的集成和单元测试应该处理的数据填充一些MongoDB集合。目前我正在使用TestNG(和Spring测试)进行测试 有没有像DbUnit这样的工具可以与MongoDB一起使用 基本上,我希望这样的工具能够从xml文件中读取文档,并在MongoDB集合中编写这样的文档 还是我遗漏了一些显而易见的东西,比如针对此类需求的最佳实践?如果您不介意执行,您可以随时使用mongodump/mongoimport/mongore

我正在开发一个使用Spring数据和MongoDB管理持久层的项目。我发现需要用我的集成和单元测试应该处理的数据填充一些MongoDB集合。目前我正在使用TestNG(和Spring测试)进行测试

有没有像DbUnit这样的工具可以与MongoDB一起使用

基本上,我希望这样的工具能够从xml文件中读取文档,并在MongoDB集合中编写这样的文档


还是我遗漏了一些显而易见的东西,比如针对此类需求的最佳实践?

如果您不介意执行,您可以随时使用mongodump/mongoimport/mongorestore。或者,您可以使用一个json文档文件,并使用com.mongodb.util.json#parse()或jackson将json读入DBObjects并将其写入mongo。

EmbedMongo是一个很好的工具。它与Maven集成

EmbeddeMongo允许您轻松设置嵌入式MongoDB实例进行测试。一旦测试完成,它内置了清理支持

请参见本教程

在我的一个项目(Spring可用)中,我使用了一个侦听
上下文刷新事件的
应用程序侦听器


这里有一个例子:这种方法可以在每次集成测试会话开始时使用,或者,如果稍微调整一下,甚至在每次集成测试之前使用。不幸的是,它没有与Maven集成,并假设Spring处于保护之下。

这里有一个简单但有点原始的util,它可以将db state设置为json中描述的状态:

要加载数据库状态,只需编写两行代码:

//db here is a com.mongodb.DB instance
MongoDBTester mongoDBTester = new MongoDBTester(db);
mongoDBTester.setDBState("predefinedTestData.json");
要检查数据库状态,请执行以下操作:

mongoDBTester.assertDBStateEquals("expectedTestData.json");
使用预期数据编写json文件有两种方法:

严格匹配。这是表示db状态的常用json文件。在大多数情况下,您只需要在测试后准确描述db状态

模式匹配。如果您希望在测试中使用随机字符串,或者例如,您的业务逻辑为实体生成随机ID,那么您可能需要的不仅仅是严格匹配:

{“电影”:[{“_id”:“$anyObject()”,“name”:“泰坦尼克号”,“年份:1997}]}


上面的json表示,测试预期“电影”集合中会有一个名为泰坦尼克号和1997年的文档。此外,它必须具有非空字段id,其中包含任何对象。

谢谢您的回答。如果可能的话,我想要一个可以与maven集成的工具。请在这个答案的链接中添加一个引用/示例,因为这个页面可能会消失。到目前为止,这是最好的选择谢谢。如果能擦一擦就好了