配置&使用mongodb模型服务器进行单元测试

时间:2011-05-02 13:35:34

标签: mongodb junit mocking

我必须使用MongoDB商店为Java代码开发一些Junit测试。是否有任何框架/库允许我初始化模拟内存中的MongoDB服务器?

(我们的想法是只测试代码本身,这意味着,如果MongoDB已安装并运行,则可以在任何机器上独立测试。)

提前致谢!

5 个答案:

答案 0 :(得分:10)

fongo可能就是你要找的东西。

答案 1 :(得分:4)

我用Java写了一个MongoDB假实现:mongo-java-server(参见this answer)。

答案 2 :(得分:3)

我们实际上正在研究这样的测试系统,这是非常可行的。在我们的方法中,我们的测试框架扩展了标准测试用例类(在我们的例子中是JUnit,但TestNG似乎更有能力),它使用以下步骤设置和删除每个测试的各种数据库依赖:

测试套件设置

1)启动mongod进程(我们使用ProcessBuilder,存储Process实例)

测试设置:

2)使用测试特定的.js文件运行mongo以生成初始数据状态

测试

3)运行测试

测试拆解

4)删除数据库

Test Suite Teardown

5)停止mongod进程(process.destroy())

由于启动和停止mongod是唯一耗时的事情,我强烈建议尽可能少地做这件事。优选一次用于整个测试套件。我们的东西还没有完成,但早期结果是积极的。我不认为有很多替代品可供选择。在编写时没有mongo模拟库,mongod没有内存/嵌入模式。

答案 3 :(得分:1)

不是真的,你必须自己在应用程序层中做这种事情。如果您使用Morphia,您可以将任何模拟框架与您喜欢的服务层一起使用(因为对象只是POJO),但db / driver级别没有任何东西可以帮助您。

很多人只是使用本地开发者。具有一组测试数据的mongodb实例,因为它非常快。我知道为每个测试加载测试数据的人,比如使用假/测试数据复制数据库。

答案 4 :(得分:0)

作为测试夹具设置的一部分,删除数据库并使用任何默认测试数据填充它。