Junit中利用Embedded Mongo(Fongo)

MongoDB 是一个基于分布式文件存储的NoSQL数据库,在应用开发中使用非常普遍,因为mongo是由 C++ 语言编写,真实的mongodb只能以server模式独立运行,这样就使得基于mongo应用的junit无法真正的独立运行,除非我们将所有mongo相关的操作都mock,本文将介绍一种为了针对mongo应用的junit而独立开发的内存库fakemongo,简称fongo,官网地址[url=https://github.com/fakemongo/fongo] fongo [/url]。
在spring boot的官方文档中,Embedded Mongo采用的是de.flapdoodle.embed:de.flapdoodle.embed.mongo,地址[url=https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo]embed.mongo[/url]。其实现方式是在应用程序启动时,根据具体依赖的de.flapdoodle.embed.mongo版本,以及操作系统的版本,从mongo官方下载网站上下载相应的mongo版本,并启动,在应用程序结束时停止mongo并清除数据。因为我们的开发环境不能连上互联网,想采用这个方式必须把不同平台的mongo都下载好,放到我们的局域网,还必须在局域网里面搭建一个http服务,并重写flapdoodle.embed.mongo默认的下载地址,比较麻烦,并且我们应用只是使用了mongo基本的存储查询功能,不依赖于MapReduce等高级特性,经过对比我们采用了fongo作为我们junit时使用的mongo库。
fakemongo目的就是为了简化mongo应用的junit,使用java完全重写,因而可以真正的运行于内存中。具体示例参考 [url=https://github.com/lordofthejars/nosql-unit/tree/master/nosqlunit-demo/src/main/java/com/lordofthejars/nosqlunit/demo/mongodb]nosqlunit-mongo[/url]
展开阅读全文

没有更多推荐了,返回首页