Java中的Mongodb单元测试

fongo-component:使用 fongo 对依赖于 mongo 的组件进行单元测试的组件 方格组件 使用作为 MongoDB 的内存模拟的。 用于单元测试依赖于 Mongo 的组件(例如存储库)。 与mongo-component 兼容。 安装 将以下依赖项添加到您的 project.clj 文件中: 用法 需要库: ( require '[component.fongo :refer [new-fongo] '[com.stuartsierra.component :as component]) 启动组件将创建一个:db键: ( -> ( new-fongo " test " ) ( component/start ) :db ) 与存储库一起使用 示例存储库协议: ( defprotocol Repository ( find-by-id [repo id]) ( save [repo object])) 可以用实现: 立即下载

如何进行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测试 java连接mongodb测试,包括增删改查等操作的实用技术 立即下载

相关推荐

java-MongoDB测试类

这个类是java和MongoDB的交互测试类,在使用前需要安装MongoDB数据库

Junit中利用Embedded Mongo(Fongo)

MongoDB 是一个基于分布式文件存储的NoSQL数据库,在应用开发中使用非常普遍,因为mongo是由 C++ 语言编写,真实的mongodb只能以server模式独立运行,这样就使得基于mongo应用的junit无法真正的独立运行,除非我们将所有mongo相关的操作都mock,本文将介绍一种为了针对mongo应用的junit而独立开发的内存库fakemongo,简称fongo,官网地址[u...

高枫的博客 1866

mongodb基于java测试

1.在运行一下测试程序之前确保安装MongoDB,访问默认端口,则访问成功 2.测试案例 public enum Mongotest { instance; private static MongoClient mongoClient; static { String ip = "127.0.0.1";...

杨宇 394

From Manual to Magic: How nnU-Net is Revolutionizing Biomedical Image Segmentation Without Human Int

本文探讨了nnU-Net如何通过全自动深度学习技术革新生物医学图像分割领域。作为自我配置的智能系统,nnU-Net无需人工干预即可完成从数据预处理到模型训练的全流程,显著提升医学影像分割的效率和精度,尤其在CT和MRI影像分析中表现卓越。

metal的博客 1082

晶圆测试厂wafer map管理建议

按照Recipe设定bin定义 应有版本管理概念,一般使用最新版本做为活动版本即可 Bin明细中应包含 BinID、BinCode、BinName、BinType、BinColor、Description BinID可使用数字类型 BinCode可参照实际机台的Bin,用于匹配 有些公司也将BinID、BinCode理解为SBin和HBin 即 Software Bin & Hardware Bin 一般也将BinID对应到客户的Bin BinType

凯神做开发 1万+

区间DP从入门到实战:分离与合体问题的状态转移与代码实现

动态规划是算法竞赛与工程优化中的核心思想,而区间DP作为其重要分支,专门处理序列上子区间的最优决策问题。其基本原理是将大区间拆分为相邻子区间,通过枚举分割点逐步合并子问题结果,从而以递推方式求解全局最优值。这种由小区间推大区间的结构清晰、模板化强,具有极高的技术复用价值,广泛应用于石子合并、矩阵链乘法、括号匹配等经典场景。在实际工程与算法训练中,掌握区间DP的状态定义、转移方程和三层循环实现,能有效解决一类“分离与合体”式的优化问题。本文以“分离与合体”题目为切入点,系统梳理区间DP的解题框架、代码模板、边

weixin_34178244的博客 495

建议收藏:华为海思IC设计笔试题,含解析(附下载)

接触过的部门有麒麟芯片、CPU/GPU,总体面试感觉非常好,规范且认真,第一轮手撕代码状态机+复盘机考题+瞄准几个知识点深挖,时间1hour+;一二轮面试是连着的,所以很累。但是岗位就那么多,在面试的时候,很多同学因为准备不充分,与岗位失之交臂,无缘进入该公司。时序电路有记忆功能,不会产生锁存器,锁存器一般在组合逻辑中case写不全,else写不全,或者敏感列表写不全。

nuoweishizi的博客 3286

Java SpringBoot 操作 MongoDB 测试

该文仅仅为个人MongoDB测试案例,注释中的内容只是个人理解,如果有误请务必指出。

BlueTeehAC的博客 758

MATLAB 控制 E4438C 信号源的研究

通过 MATLAB,我们可以实现对 E4438C 的远程控制,从而实现更高的自动化和可编程性。总结起来,通过使用 MATLAB 和 Instrument Control Toolbox,我们可以轻松地控制 E4438C 信号源并生成各种类型的信号。需要注意的是,以上代码仅为示例,实际应用中可能需要根据具体情况进行更详细的配置和错误处理。此外,MATLAB 还提供了一系列函数和命令,可用于控制 E4438C 信号源的其他功能,如频率调谐、功率设置、调制设置等。您可以根据自己的需求进行相应的配置和控制。

RswtPerl的博客 1012

PDN分析实战:电源完整性设计与Altium PDN Analyzer全流程指南

电源完整性(PI)是嵌入式硬件系统稳定运行的基础能力,其核心在于控制电流密度与电压降两大物理量。基于欧姆定律与热-电耦合原理,PDN分析将抽象的电源噪声问题转化为可量化、可定位的几何与电气参数优化过程。该技术显著提升系统抗干扰能力、降低复位与ADC漂移等隐性故障率,并直接支撑EMC合规性设计。典型应用场景包括电机驱动板、Wi-Fi模块、STM32/ESP32等资源受限型MCU供电网络验证。本文以Altium Designer为工具平台,结合IPC-2152标准与真实工程案例,详解从功率预算、模型构建到瓶颈定

weixin_28949937的博客 228

java kiwi_Java中的Mongodb单元测试 - kiwi

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

weixin_42303461的博客 268

Cloud Connector RFC 访问控制深度实践:为 SAP BTP ABAP environment 打通安全、可控的远程连接

本文是一份面向企业ABAP团队与平台工程团队的Cloud Connector RFC访问控制配置指南。文章详细介绍了虚拟主机/实例号、负载均衡、资源白名单等核心概念,并提供了从零开始的配置流程。主要内容包括:通过Cloud Connector建立安全隧道的价值(零暴露、最小权限)、两种连接类型(无负载均衡/带负载均衡)的配置方法、资源白名单设置技巧,以及两个典型应用场景(Custom Code Migration远程检查与BAPI调用)的实操案例。指南基于SAP官方文档,包含落地经验与避坑建议,可帮助团队快

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 143

mock mongo java_使用MongoDB进行单元测试

小编典典正如sbridges在这篇文章中所写的那样,不拥有专门的服务(有时也称为存储库或DAO)是一个坏主意,该服务会从逻辑中抽象出数据访问权限。然后,您可以通过提供DAO的模拟来测试逻辑。我要做的另一种方法是创建一个Mongo对象的Mock(例如PowerMockito),然后返回适当的结果。这是因为您不必测试数据库是否可以在单元测试中工作,但是更多的时候您应该测试是否向数据库发送了正确的查询。...

weixin_32708653的博客 924

YOLOv11改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解

在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下:详细内容参考:YOLOv11原始模型结构介绍 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检

Limiiiing的博客 8796

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mock mongo java_详解在SpringBoot中使用MongoDb做单元测试的代码

先评价: 功能倒是不错,但是总觉得耽误时间先引入pom依赖org.springframework.bootspring-boot-starter-testtest代码1public class MongoUser implements Serializable{private static final long serialVersionUID = 1L;@Idprivate String id;...

weixin_39994296的博客 446

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java实现对MongoDB的AND、OR和IN操作

在MongoDB的官方文档中关于Java操作的介绍,只给出了很简单的几个例子。这些例子虽然可以满足一定的需求,但是还并不是太完全。下面是我根据网页中的提示写的几个例子。        1.背景。用JUnit4.8.2实现的单元测试的形式。测试数据: {uid:10,use

mydeman的学习日志 4万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java单元测试:使用de.flapdoodle.embed.mongo库完成MongoDB的操作mock

单元测试第四篇,演示在单元测试时,如何对MongoDB操作进行mock,便于本地或CI/CD环境的质量测试、覆盖率测试。 相关代码已经放在Github上:源代码 注:该库在首次运行时,会真的去下载并搭建一个Mongo运行环境,因此: 1、运行时,需要外网网络,并且质量不能太差,一个包上百兆呢(只会下载一次) 2、每次运行,都需要清理旧数据,否则可能对你的测试代码造成干扰。 下面简述开发过程: 1、首先,还是正常建立项目,并有常规的MongoDB操作的业务逻辑; 2、项目添加mock库的引用,打开pom.xm

北亮的专栏 3057

MongoDB基本操作

分享一下我经常用到的自己写的mongo用法示例 该示例基于当前最新的mongo驱动,版本为mongo-2.10.1.jar,用junit写的单元测试。   TestCase.java Java代码   package com.wujintao.mongo;    import java.net.UnknownHostException;  import java.util

yanping_ren的专栏 1360

java更新数据多字段_MongoDB,使用java同时更新三个文件字段,有时只更新两个字段...

我编写了一个单元测试来展示代码的行为方式.该单元测试证明:>您应该能够一次更新多个字段(即可以使用$set关键字更新多个字段)> updateMulti将更新所有匹配的文档(注意,像所有使用TestNG而不是JUnit的Java MongoDB测试一样,但在这种情况下它非常相似)@Testpublic void shouldUpdateAllMatchingFieldsUsingMul...

weixin_35002851的博客 1280

直接裂开!京东二面被问SpringBoot整合MongoDB,我不会啊

开始进入正题 一、技术介绍 SpringBoot整合MongoDB的实现步骤一、技术介绍1.MongoDB是什么?二、使用步骤 1.MongoDB是什么? MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。 与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB能够使.

wj1314250的博客 3723

30分钟内使用MongoDB

最近,我被NoSQL错误咬住了-或是我的同事Mark Atwell提出的“燃烧在哪里!” 运动。 尽管我无意于在不久的将来或可预见的将来回避友好的“ SELECT ... WHERE”,但我确实设法弄懂了一些代码。 在本文中,我分享了我在NoSQL世界中首次尝试的知识。 在本文中,我们的目标是启动并运行能够与MongoDB进行交互的基本Java应用程序。 就其本身而言,这并不是一项艰巨的任...

最佳 Java 编程 151

MongoDB与Java(2) - 操作数据库

我们知道,MongoDB的三大基本元素是数据库,集合,文档,而这一章,我们将学习如何使用MongoDB Java Driver API来操作数据库。本章不会谈到所有的API,只是起一个抛砖引玉的方式。本章内容如下: 1. 数据库基本操作 2. 执行db.adminCommand命令   我们还是用代码来驱动讲解,而不是讲解来驱动代码。在本章中,甚至以后的章节中,都会沿用使用单元测试代码...

changyuanchen的博客 412

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结

MongoDB JPA规范支持;嵌套字段查询;@Query注解查询;ISODate类型;UTC时间,与+8小时时区;toInstant()方法;

lonelymanontheway的博客 2469

MongoDB学习系列12:Java实现对MongoDB的AND、OR和IN操作

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33810006的博客 166
上一篇: Ansible + Vagrant + Expressjs (Mongodb)
下一篇: Mongodb ODM: morphia
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值