如何对 Spring Boot MongoRepository 进行单元测试?

2024-04-28

在我的 Spring Boot Web 应用程序中,我使用 MongoDB 来存储数据。在应用程序中,我使用扩展的接口访问数据库MongoRepository.

如何为这样的存储库类设置单元测试?我想要的是

  • 启动 MongoDB 的嵌入式/内存实例
  • 从 JSON 或 XML 插入测试数据
  • 使用自动连接的存储库对测试数据执行查询

我尝试过使用嵌入式 MongoDB https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo,但我不知道如何从文件中插入测试数据。 我也尝试过使用NoSQL单元 https://github.com/lordofthejars/nosql-unit,但是SpringApplicationConfiguration与单元测试配置冲突,导致读写数据库不同。


2018 和 Spring Boot 2 的更新。首先,您可以按照以下方式对嵌入式数据库进行纯数据集成测试文档 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-testing-autoconfigured-mongo-test。这使用了DataMongoTest注解。这仅配置使 mongoDB 测试成为可能的必要依赖项。

如果您想进行完整的集成测试,请添加AutoConfigureDataMongo改为注释:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@AutoConfigureDataMongo
public class PriceApiControllerIT {

你应该在你的pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>de.flapdoodle.embed</groupId>
        <artifactId>de.flapdoodle.embed.mongo</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Spring Boot MongoRepository 进行单元测试? 的相关文章

  • @SubscribeMapping 与 @MessageMapping

    当在 Spring Boot 中使用 websockets 时 我见过使用以下示例 Configuration EnableWebSocketMessageBroker public class WebSocketConfig extend
  • mongoid 中的嵌入文档与哈希数据类型

    我找不到任何讨论此问题的博客文章或文档 它们 嵌入式文档和哈希数据类型 非常相似 彼此相比有何好处或限制 考虑我的架构设计 class HistoryTracker include Mongoid Document include Mong
  • 创建永远不匹配的 mongo 表达式的最佳方法

    我正在寻找的内容在某种程度上相当于在 SQL 中执行的操作 WHERE 1 0 我正在寻找这样的东西 因为我正在构建一个类型安全的 DSL 来在我的域上执行查询 支持连接和析取 有时 添加一个从不匹配任何内容的查询可能比在代码中处理它更容易
  • 为任何更新查询增加 Mongoose 文档版本的简单方法?

    我想开始利用 Mongooses 文档版本控制 v key 我在实际增加版本值时遇到了问题 然后我发现您必须添加this increment 执行查询时 有没有办法自动递增 目前 我只是将其添加到pre用于更新类型查询的中间件 module
  • Mongoose查询结果是只读的吗?

    如何修改 Mongoose 查询返回的对象 假设我们有以下模式 var S new mongoose Schema name String field String 我对结果进行了以下查询和修改 var retrieve function
  • 为什么 html 页面没有在 thymeleaf 中显示?

    我在用着spring boot和thymeleaf查看引擎 问题是控制器没有显示正确的 html 页面 并且总是显示Whitelabel Error Page 控制器 package com example controller impor
  • mongodb 正在运行吗?

    我已经在我的 Unix 服务器上安装了 Mongodb 和 PHP 驱动程序 我的问题是如何判断 Mongodb 是否正在运行 是否有一个简单的命令行查询来检查状态 如果我从外壳程序启动一次 如果我退出外壳程序 它会继续运行 情况似乎并非如
  • 具有空值的 Spring MVC @Path 变量

    Am developing an application using spring boot In Resource am using path variable PathVariable annotation and Request Pa
  • Spring引导@Configurable

    我正在尝试配置Autowired在 Spring Boot 应用程序下的非 Spring 托管类中 我在部署在 tomcat 服务器下的 Web 应用程序下成功运行了这个 但是当我想在 Spring Boot 下运行它时 没有任何效果 我制
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • 实体创建无用的 id 字段

    我有一个CrudRepository与两个实体 Problem 特征实体总是创建一个附加的id数据库中的字段但未选择正确的characteristic id要生成的字段JSON machine entity machine id name
  • mongoengine 操作的原子性如何

    我正在尝试在对象的状态之间转换 如下所示 User objects id user id state STATE WAITING update one set state STATE FINISHED The question是 是否存在这
  • 如何使用Spring @Value注解来设置值?

    最近开始学习Spring核心框架 我对将 spring 与 XML 一起使用很有信心 但只想尝试基于注释的程序 但现在我陷入了这个 Value 注释 我有一个类 Line 扩展 Shape 接口 它使用 Point 对象作为依赖项 Poin
  • MongoDB 如何选择候选计划

    我的应用程序中的查询速度很慢 创建两个索引后 它在本地数据库中使用它们以获得更好的性能 但是当我部署在生产数据库上时 它仍然使用原始索引 下面是我所做的 集合中的属性tasks team id project id created by a
  • Spring 框架 application.properties 与 logback.xml

    我正在使用 Spring 和 Spring boot 最近 在尝试使用 EhCache 时 我尝试为 EhCache 启用日志记录 在 application properties 中设置日志级别 logging level org spr
  • 为什么 Mongohint 可以使查询运行速度提高 10 倍?

    如果我使用explain 从shell运行mongo查询 获取所使用的索引的名称 然后再次运行相同的查询 但使用hint 指定要使用的相同索引 解释计划中的 millis 字段是显着下降 例如 没有提供任何提示 gt gt db event
  • $unwind聚合框架中的对象

    在 MongoDB 聚合框架中 我希望在对象 即 JSON 集合 上使用 unwind 运算符 看起来不像是这样possible http docs mongodb org manual reference aggregation S un
  • Spring Boot 和 Kafka,Producer 抛出 key='null' 异常

    我正在尝试使用Spring Boot with Kafka and ZooKeeper with Docker docker compose yml version 2 services zookeeper image wurstmeist
  • 将 Mongodb 与 Android 应用程序连接

    我正在尝试构建 Android 应用程序来连接到 MongoDB 一直被这个问题困扰 MongoDB 是可访问的 但没有安全性 可以通过手机使用 Mono Explorer 添加数据 public void sendMessage View
  • 在 Spring Context 加载实际的 Spring Bean 之前是否模拟了模拟 bean (@MockBean)?

    让我们以下面的例子为例 Autowired MockBean private Foo foobar Spring Context 是否加载类Foo首先 然后应用模拟 或者是 Mockbean以某种方式被检测到 Spring 创建并应用模拟而

随机推荐

  • Postgresql存储过程返回表所有列

    创建了一个函数 该函数有一个输入参数 我可以返回一列 但我想返回所有表列 另外我想做的是 如果结果为零 函数只返回 0 我该怎么做 这里是错误结果 错误 查询没有结果数据的目标 提示 如果您想放弃 SELECT 的结果 请使用 PERFOR
  • 部署应用程序时无需取消部署前一个应用程序并且无需停机?

    我在 Web 应用程序中使用 Glassfish Java 和 JSP over MySQL 许多在线用户使用此网络应用程序 该网站不应关闭 当我想要部署一个新的 war 文件时 我应该在服务器上为我的应用程序取消部署并部署新的战争文件 我
  • 参数化测试也取决于 pytest 中的参数化值

    我有一个测试 我有一个设置方法 应该收到一个dataset和一个测试函数 应该为每个运行data in dataset 基本上我需要类似的东西 datasetA data1 a data2 a data3 a datasetB data1
  • 如何向 ionic 2 警报添加禁用按钮

    我创建了一个 ionic2 警报 我必须根据条件禁用按钮 这是我的代码的简单结构 import AlertController from ionic angular export class MyPage constructor publi
  • 将子域重定向到新域

    大家好 尝试让 301 重定向正常工作但遇到了麻烦 我需要将 sub domain1 com 重定向到 www domain2 com 并确保所有文件名或参数都随之发送 这就是我正在尝试的 RewriteCond HTTP HOST dom
  • Maven + Surefire/Failsafe - forkMode="perthread" 不起作用...解决方法?

    我们正在开发一个基于嵌入式 Infinispan 数据网格集群的应用程序 在我们应用程序的目标环境中 数据网格的每个成员将在独立的 JVM 中运行并使用jgroup集群将会形成 这实际上是由 Infinispan 完成的 为了对我们正在使用
  • 代理模式和装饰者模式的区别

    你能给出任何好的解释吗 Proxy and 装饰者 我看到的主要区别是 当我们假设Proxy uses 作品 and 装饰者 uses 聚合那么似乎很清楚 通过使用多个 一个或多个 装饰器您可以修改 添加功能到预先存在的实例 装饰 而Pro
  • JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

    JDK 8 中的一项新功能允许您添加到现有接口 同时保留二进制兼容性 语法就像 public interface SomeInterface void existingInterface void newInterface default
  • 在 xhtml 页面中显示版本和构建日期

    我想在 JSF 应用程序的页脚上显示构建版本和构建日期 这些页面是 XHTML 我正在寻找从 pom xml 或其他工件获取信息的方法 我发现以下使用 maven replace 插件 http www vineetmanohar com
  • 颜色“透明”不起作用

    我的 IE 有问题 还有什么问题 我使用 CSS 生成内容 其中也有一个背景图像 我看起来是这样的 nav ul li after content position relative z index 99 background transp
  • 对 Azure Functions 和 .csx 文件进行单元测试

    Azure Functions 抽象了大量依赖项 例如队列库和 Azure 表 因此 从单元测试依赖项模拟的角度来看 编码工作量较少 因此维护也较少 假设我们使用 Visual Studio 2015 进行本地开发 如何对单个 Azure
  • 什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品?

    我正在寻找一个与 Eclipse 插件框架相当的基于插件的应用程序框架 在我看来 它包括 a core 插件管理框架 Equinox OSGI 它提供了声明扩展端点 然后发现并加载为这些端点提供服务的插件的能力 这与依赖注入不同 但不可否认
  • 在 jQuery 中将一列的内容复制到另一列

    下面的 jQuery 非常慢 约 7 秒 我显然做错了 我正在尝试复制列的内容col到专栏0在 HTML 表格中 所以如果 col 是 2 那么我需要将第 2 列复制到第 0 列 for var i 0 i lt 31 i grid tr
  • 在 div 内为

    添加下划线

    我正在尝试下划线h1 title 但由于某种原因它总是占用父 div 的整个长度 我能够做到这一点的唯一方法是添加position absolute CSS 中的属性 This is the design And this is what

  • 将我的数据库类与项目中的其他类一起使用

    我有一个自己编写的自定义数据库类 还有一个用户类和一个站点类 MySQL 类有这样的方法 connect query clean fetch 用户等级 register login logout resetPass 站点类别 updateT
  • Python 滚动文本模块

    我想使用scrolledtext模块创建一个ScrolledText小部件 以便在python中创建GUI 我已经成功创建了 ScrolledText 小部件 但是我无法向其添加水平滚动条 e3 ScrolledText window3 w
  • 如何在 laravel 中插入多类别和多列不同类别的帖子?

    大家好 我是一个新的 Laravel 我的项目有问题 我有2张桌子 posts id title category id category id name PHP Laravel Ruby 例如 我想要的结果是 如果我将帖子插入帖子数据库
  • 我无法在 Unity Hub 中激活许可证

    我重新安装了视窗 10 我从官方网站下载了 Unity Hub 运行 unity hub 我看到错误 您没有有效的许可证 错误上有 2 个按钮 管理许可证 和 关闭 我单击 管理许可证 进入 Unity 中心设置中的 许可证管理 页面 单击
  • Java 泛型和数组初始化

    下面这句话的解释是什么 public class GenericsTest statement 1 public ArrayList
  • 如何对 Spring Boot MongoRepository 进行单元测试?

    在我的 Spring Boot Web 应用程序中 我使用 MongoDB 来存储数据 在应用程序中 我使用扩展的接口访问数据库MongoRepository 如何为这样的存储库类设置单元测试 我想要的是 启动 MongoDB 的嵌入式 内