如何对Spring Boot MongoRepository进行单元测试? [英] How to unit test a Spring Boot MongoRepository?

查看:42
本文介绍了如何对Spring Boot MongoRepository进行单元测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

我试过使用Embedded MongoDB,但我想不出如何从文件中插入测试数据。 我也尝试过使用NoSQLUnit,但SpringApplicationConfiguration与单元测试配置冲突,导致用于读写的数据库不同。

推荐答案

2018和Spring Boot2的更新。首先,您可以按照documentation与嵌入式数据库进行纯数据集成测试。它使用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>

这篇关于如何对Spring Boot MongoRepository进行单元测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆