当 JUnit 测试为 运行 时 运行 MongoDB 的问题
Problems with running MongoDB when JUnit tests are ran
我需要在我的 JUnit 测试 运行 时自动 mongoDB 到 运行,然后在测试完成时停止。我试过使用 Maven mongoDB 插件,但 mongoDB 似乎没有 运行。有什么帮助吗?
如果你只是单元测试,你应该尝试模拟数据库集成。但是,我不得不一次性处理这个问题,需要测试 Mongo/Java 项目之间的集成。 Mongo 插件也不适合我。以下是我尝试过的两个选项,也许它们会有所帮助:
选项 1(带 Docker):在我的构建和部署堆栈(Maven、Jenkins、Docker)中,对我来说最简单的事情是启动一个 Mongo 容器作为预构建步骤,运行 使用集成环境配置设置进行构建,并作为 post 构建步骤关闭容器。此外,如果您有需要测试的特定数据,您可以构建一个包含该数据的容器。
选项2(只是Maven/Mongo):在Maven的pre-integration-tests
生命周期阶段,使用Maven exec plugin调用操作系统启动Mongo。 运行 你的测试,并确保在 integration-test
阶段需要 Mongo 的测试是 运行。然后在post-integration-test
阶段关闭Mongo向下。根据您的测试,如果它们改变了您的 Mongo 实例的状态,这可能会很棘手。如果这是一个问题,您可以将一些脚本写入 reinitialize/destroy Mongo,并在上述阶段调用这些脚本。
您可以为此使用 embed.mongo:https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo
它基本上在当前 jvm 中启动了一个嵌入式 mongo 数据库。
您可以使用 @BeforeAll
/ @Before
子句启动它,然后停止它,一切都会被清理。
Spring Boot 内置了自动配置,所以你只需要添加对 embed.mongo 的依赖:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded
否则,您可以使用 Github 上的文档来设置您自己的嵌入式 mongo 数据库。
我需要在我的 JUnit 测试 运行 时自动 mongoDB 到 运行,然后在测试完成时停止。我试过使用 Maven mongoDB 插件,但 mongoDB 似乎没有 运行。有什么帮助吗?
如果你只是单元测试,你应该尝试模拟数据库集成。但是,我不得不一次性处理这个问题,需要测试 Mongo/Java 项目之间的集成。 Mongo 插件也不适合我。以下是我尝试过的两个选项,也许它们会有所帮助:
选项 1(带 Docker):在我的构建和部署堆栈(Maven、Jenkins、Docker)中,对我来说最简单的事情是启动一个 Mongo 容器作为预构建步骤,运行 使用集成环境配置设置进行构建,并作为 post 构建步骤关闭容器。此外,如果您有需要测试的特定数据,您可以构建一个包含该数据的容器。
选项2(只是Maven/Mongo):在Maven的pre-integration-tests
生命周期阶段,使用Maven exec plugin调用操作系统启动Mongo。 运行 你的测试,并确保在 integration-test
阶段需要 Mongo 的测试是 运行。然后在post-integration-test
阶段关闭Mongo向下。根据您的测试,如果它们改变了您的 Mongo 实例的状态,这可能会很棘手。如果这是一个问题,您可以将一些脚本写入 reinitialize/destroy Mongo,并在上述阶段调用这些脚本。
您可以为此使用 embed.mongo:https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo
它基本上在当前 jvm 中启动了一个嵌入式 mongo 数据库。
您可以使用 @BeforeAll
/ @Before
子句启动它,然后停止它,一切都会被清理。
Spring Boot 内置了自动配置,所以你只需要添加对 embed.mongo 的依赖:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded
否则,您可以使用 Github 上的文档来设置您自己的嵌入式 mongo 数据库。