我需要使用Java在Mongo数据库上进行几次集成测试,并且我正在寻找一种类似DbUnit的解决方案(DbUnit适用于Hibernate),它可以使用自定义数据填充我的数据库,并在每次运行后重置状态。与MongoDB集成测试?
任何提示?
感谢
我需要使用Java在Mongo数据库上进行几次集成测试,并且我正在寻找一种类似DbUnit的解决方案(DbUnit适用于Hibernate),它可以使用自定义数据填充我的数据库,并在每次运行后重置状态。与MongoDB集成测试?
任何提示?
感谢
要开始了,我不知道任何直接等同于DBUnit的为蒙戈的。 Mongo仍然是一款新产品,所以你可能需要为这些东西“推出自己的产品”。
不过,也有蒙戈的几个特点,应该让这个简单:
根据您的数据集有很多方法 去做这个。但基本工具在那里。
所以整个事情应该是非常简单的。虽然你将不得不写很多胶水代码。
不要忘了,你可以使用Java的File.createTempFile(使用file.deleteOnExit)来轻松地测试mongo数据库存储。 – Steven 2010-10-05 03:32:55
这里是我做的:连接到已知(通常共享)蒙戈实例,但创建使用UUID每个测试运行新的独特的数据库。您不必担心创建集合,因为它们是在第一次将文档存储在其中时懒惰地创建的。在存储库或DAO的构造函数中创建所需的任何索引;如果索引已经存在,mongo索引创建立即成功,不做任何工作。显然,你不需要担心模式迁移;-)
这个方案要求你从一个空的数据存储开始,但它是一个已知的状态,所以它很容易填充到你的测试的设置阶段如果需要的话。
测试完成后,在拆卸阶段删除整个数据库。
这个问题已经回答了这里,并允许启动和停止每次测试之间实例: https://stackoverflow.com/a/9830861/82609
但是启动/停止之间的每个测试似乎集成测试减慢,这样的话你最好开始/停止它的整个测试套件: https://stackoverflow.com/a/14171993/82609
我知道这个问题是旧的,但也许我的答案将是有用的人。 下面是一个简单util的,我最近写的:https://github.com/kirilldev/mongomery
很简单填充数据库从JSON文件中的数据:
//db here is a com.mongodb.DB instance
MongoDBTester mongoDBTester = new MongoDBTester(db);
mongoDBTester.setDBState("predefinedTestData.json");
要检查DB状态:
mongoDBTester.assertDBStateEquals("expectedTestData.json");
它支持占位符对于在某些情况下可能有用的预期文件。
您可以使用nosql-unit具有MongoDB的模块
回答详细介绍下这个问题http://stackoverflow.com/questions/6437226/embedded-mongodb-when-running-integration-tests – KPrince36 2015-12-11 15:47:34