2010-10-04 103 views
5

我需要使用Java在Mongo数据库上进行几次集成测试,并且我正在寻找一种类似DbUnit的解决方案(DbUnit适用于Hibernate),它可以使用自定义数据填充我的数据库,并在每次运行后重置状态。与MongoDB集成测试?

任何提示?

感谢

+0

回答详细介绍下这个问题http://stackoverflow.com/questions/6437226/embedded-mongodb-when-running-integration-tests – KPrince36 2015-12-11 15:47:34

回答

3

要开始了,我不知道任何直接等同于DBUnit的为蒙戈的。 Mongo仍然是一款新产品,所以你可能需要为这些东西“推出自己的产品”。

不过,也有蒙戈的几个特点,应该让这个简单:

  1. 它运行以最小权限
  2. 它可以简单地编制文件“运行”
  3. 它并没有真正有一个模式(除了索引)
  4. 它可以工作的JSON数据

根据您的数据集有很多方法 去做这个。但基本工具在那里。

  • 您应该能够从您的测试中为您的测试专门启动一个版本。
  • 您应该能够从JSON文件导入“状态”数据。
  • 您应该能够从一个JS文件(从零开始)申请任何服务器端功能。

所以整个事情应该是非常简单的。虽然你将不得不写很多胶水代码。

+2

不要忘了,你可以使用Java的File.createTempFile(使用file.deleteOnExit)来轻松地测试mongo数据库存储。 – Steven 2010-10-05 03:32:55

2

这里是我做的:连接到已知(通常共享)蒙戈实例,但创建使用UUID每个测试运行新的独特的数据库。您不必担心创建集合,因为它们是在第一次将文档存储在其中时懒惰地创建的。在存储库或DAO的构造函数中创建所需的任何索引;如果索引已经存在,mongo索引创建立即成功,不做任何工作。显然,你不需要担心模式迁移;-)

这个方案要求你从一个空的数据存储开始,但它是一个已知的状态,所以它很容易填充到你的测试的设置阶段如果需要的话。

测试完成后,在拆卸阶段删除整个数据库。

0

我知道这个问题是旧的,但也许我的答案将是有用的人。 下面是一个简单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"); 

它支持占位符对于在某些情况下可能有用的预期文件。