`

Junit中利用Embedded Mongo(Fongo)

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

2019-8-8
采用Fakemongo时,支持的版本是spring boot2.0.2.release,对应的mongo版本是3.6.3,后来把spring boot升级到2.1.5.release,对应的版本是mongo-java-driver-3.8.2.jar,执行时报错 java.lang.NoClassDefFoundError: com/mongodb/OperationExecutor,并且从fakemongo的github更新来看,这个项目已经没有人维护更新了。所以转换成了mongo-java-server,对新版本也能支持了mongo-java-server
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics