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

新手上路,请多包涵

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

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

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

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

原文由 Johanneke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 882
1 个回答

只需使用 Spring Boot 中的 @DataMongoTest 即可

 @RunWith(SpringRunner.class)
@DataMongoTest
public class FooRepositoryTest {

    @Autowired
    FooRepository fooRepository;

    @Before
    public void setUp() throws Exception {
        fooRepository.save(new Foo());
    }

    @Test
    public void shouldBeNotEmpty() {
        assertThat(fooRepository.findAll()).isNotEmpty();
    }
}

依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
    <groupId>de.flapdoodle.embed</groupId>
    <artifactId>de.flapdoodle.embed.mongo</artifactId>
    <scope>test</scope>
</dependency>

原文由 MariuszS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进