Java中的Mongodb单元测试

如何进行Mongodb测试?

我们在java中使用Mongodb作为数据库进行存储的时候,怎么样对于进行测试呢?一种可能直接的方式就是在setUp中getDB,然后在tearDown里面dropDatabase。这样的方式相对来说比较慢。一种更好的方式就是使用fake的数据库,比如embedded的Mongodb用于测试。http://xunitpatterns.com/Test%20Double.html

我们这里使用的是https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo

引入依赖

build.gradle

dependencies {

compile "org.mongodb:mongo-java-driver:2.12.2"

testCompile "junit:junit:4.11"

testCompile "de.flapdoodle.embed:de.flapdoodle.embed.mongo:1.46.0"

}

脚手架MongodbBaseTest

编写一个MongoBaseTest,这样所有需要Mongo的测试,可以继承这个类,就可以获取db了。

public class MongodbBaseTest {

private static final MongodStarter starter = MongodStarter.getDefaultInstance();

protected MongoClient mongo;

protected DB db;

private MongodExecutable mongodExecutable;

private MongodProcess mongod;

@Before

public void setUp() throws Exception {

mongodExecutable = starter.prepare(new MongodConfigBuilder()

.version(Version.Main.PRODUCTION)

.net(new Net(12345, Network.localhostIsIPv6())).build());

mongod = mongodExecutable.start();

mongo = new MongoClient("localhost", 12345);

db = mongo.getDB("embedded-mongo");

}

@After

public void tearDown() throws Exception {

mongod.stop();

mongodExecutable.stop();

}

}

编写UserTest

public class UserTest extends MongodbBaseTest {

private DBCollection users;

@Override

@Before

public void setUp() throws Exception {

super.setUp();

users = db.getCollection("users");

}

@Test

public void should_insert_and_get_user() {

final DBObject userDocument = new BasicDBObjectBuilder()

.add("name", "kiwi")

.get();

users.insert(userDocument);

final DBObject userDocumentFromDb = users.findOne(new BasicDBObject("_id", userDocument.get("_id")));

assertThat(userDocumentFromDb.get("name"), is("kiwi"));

}

}

其他:

https://github.com/fakemongo/fongo

Java中的Mongodb单元测试

时间: 2024-10-19 10:12:33

Java中的Mongodb单元测试的相关文章

java中操作Mongodb

Mongodb是一个nosql型的数据库,存储的是类似于json对象,能够支持类似于关系型数据库的一些操作.以下是java操作mongodb. 一.建立连接(没有使用任何框架,连接是自己写的,同时在这个类写了关闭连接的方法),传入ip地址.端口和数据库名称(mongodb称集合) public class MongoDbConn { private static MongoClient mongoClient = null; private static MongoDatabase mongoD

MongoDB在windows上安装以及java中的增删改查

1.windows下的安装创建 http://tech.it168.com/a2011/0603/1200/000001200064_2.shtml http://blog.csdn.net/xiaoxing598/article/details/54233044 2.Java操作mongodb http://www.cnblogs.com/zhwl/p/3491213.html http://blog.csdn.net/xiaoyw71/article/details/49633831 htt

Java开发--操作MongoDB

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解.现在我们就用Java来操作MongoDB的数据. 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.j

java下执行mongodb

1.1连单台mongodb Mongo mg = newMongo();//默认连本机127.0.0.1  端口为27017 Mongo mg = newMongo(ip);//可以指定ip 端口默认为27017 Mongo mg = newMongo(ip,port);//也可以指定ip及端口号 1.2连双台mongodb //ip为主机ip地址,port为端口号,dataBaseName相当于数据库名 DBAddress left = new DBAddress("ip:port/dataB

使用 Visual Studio Team Test 进行单元测试和java中的测试

原文:使用 Visual Studio Team Test 进行单元测试和java中的测试 C#中test测试地 方法一. 1.从NUnit官网(http://www.nunit.org/index.php)下载最新版本NUnit,当前版本为NUnit2.5.8. 2.安装后,在VS2008中新建测试项目StartNUnit 3.右击项目选择属性,在打开的窗口中选择调试.如图: 4.选择启动外部程序,并定位到NUnit的启动程序nunit.exe.如图: 5.在项目中添加NUnit引用,如图:

java中 mongodb的各种操作

一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public List<PageUrl> getPageU

Java中遍历实体类(处理MongoDB)

在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历: 1 //java中遍历实体类,获取属性名和属性值 2 public static void testReflect(Object model) throws Exception{ 3 for (Field field : model.getClass().getDeclaredFields())

java客户端连接MongoDB数据库的简单使用

1.下载mongoDB的jar包,并引入到工程的CLASSPATH中下载:mongodb2.5驱动包下载 如果使用maven项目,最新的依赖如下: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.2.0</version> </dependency> 需要特别注意的是如果

java中关于正则一些基础使用

这是本人的第一篇技术型博客,希望能帮到有需要的朋友.-----转载请注明出处. 在之前工作中,需要对很多字符串进行处理.我现在记录下来,以免以后遗忘. 对于正则处理相关的知识,我一开始是从网上找资料配合使用Java API1.6的一个中文版进行学习,很感谢翻译这个版本的团队(机构)或者个人,很感谢那些无私分享自己的知识的朋友. 下文中对于正则的相关知识,现在我是从oracle提供的最新的Java API,可能和以前我看得1.6有些出入,贴出API地址:http://docs.oracle.com