使用Embedded Mongo或已安装的实例进行集成测试

时间:2012-04-26 04:42:03

标签: mongodb integration-testing embedded-database

我正在处理的应用程序是一个关于tomcat的webapp上的Velocity / Spring MVC / Mongo。

我可以在Embedded Mongo上运行我的集成测试,使用EmbedMongo运行所有测试需要更长的时间,比如大约1分钟,但是在已安装的Mongo上的测试数据库上,需要大约15秒。

在创建新数据库时,使用嵌入式数据库进行集成测试是否真的有任何好处(在这种情况下,同一实例中的测试数据库)可忽略不计?实际上,测试本身可以创建数据库和所需的集合。

除了在不需要常规安装的CI盒上使用Embedded Mongo之外,我认为它没有任何好处。

请有人分享任何想法。

由于 拉夫

2 个答案:

答案 0 :(得分:1)

看看那个链接: https://stackoverflow.com/a/9830861/82609

看起来不错,但MongoDB在每次测试之间启动和关闭。

为了提高速度,您可能想要做的是为整个测试套件启动和关闭一次。 我的意思是:在测试之间保持MongoDB实例。


但是你不希望你的测试依赖于彼此。所以你可以做的是使用不同的数据库名称(UUID),这样最终你就可以运行一个MongoDB实例,有许多不同的数据库,每个测试都有一个。

或者您可以在每次测试之间清理数据库。

答案 1 :(得分:0)

使用单独安装的实例,您可以获得流程设置和拆卸成本,您希望最小化测试套件,从而获得使用嵌入式数据库的好处。