我正在处理的应用程序是一个关于tomcat的webapp上的Velocity / Spring MVC / Mongo。
我可以在Embedded Mongo上运行我的集成测试,使用EmbedMongo运行所有测试需要更长的时间,比如大约1分钟,但是在已安装的Mongo上的测试数据库上,需要大约15秒。
在创建新数据库时,使用嵌入式数据库进行集成测试是否真的有任何好处(在这种情况下,同一实例中的测试数据库)可忽略不计?实际上,测试本身可以创建数据库和所需的集合。
除了在不需要常规安装的CI盒上使用Embedded Mongo之外,我认为它没有任何好处。
请有人分享任何想法。
由于 拉夫
答案 0 :(得分:1)
看看那个链接: https://stackoverflow.com/a/9830861/82609
看起来不错,但MongoDB在每次测试之间启动和关闭。
为了提高速度,您可能想要做的是为整个测试套件启动和关闭一次。 我的意思是:在测试之间保持MongoDB实例。
但是你不希望你的测试依赖于彼此。所以你可以做的是使用不同的数据库名称(UUID),这样最终你就可以运行一个MongoDB实例,有许多不同的数据库,每个测试都有一个。
或者您可以在每次测试之间清理数据库。
答案 1 :(得分:0)
使用单独安装的实例,您可以获得流程设置和拆卸成本,您希望最小化测试套件,从而获得使用嵌入式数据库的好处。