我需要mongoDB在运行JUnit测试时自动运行,然后在测试完成时停止运行。我试过使用maven mongoDB插件,但mongoDB似乎不运行。任何帮助?运行JUnit测试时运行MongoDB的问题
回答
您可以使用embed.mongo此:https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo
它基本上开始在目前的JVM的嵌入式蒙戈分贝。
您可以使用@BeforeAll
/@Before
子句启动它,然后停止并清除所有内容。
春季启动提供一个内置的自动配置,所以你只需要添加一个依赖于embed.mongo:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded
否则,您可以使用该文档在Github上建立自己的嵌入式蒙戈分贝。
如果你只是单元测试,你应该尝试模拟数据库集成。但是,我不得不一次处理这个问题,需要测试Mongo/Java项目之间的集成。 Mongo插件也不适合我。下面是我尝试过的两种选择,也许他们会帮助:选项1(w/Docker):在我的构建和部署堆栈(Maven,Jenkins,Docker)中,最简单的做法是作为预构建步骤启动Mongo容器,使用集成环境配置设置运行构建,并关闭容器作为构建后步骤。此外,如果您需要测试特定数据,则可以构建具有该数据的容器。选项2(仅Maven/Mongo):在Maven的pre-integration-tests
生命周期阶段,使用Maven exec plugin致电操作系统启动Mongo。运行测试,并确保在integration-test
阶段运行需要Mongo的测试。然后在post-integration-test
阶段关闭Mongo。根据您的测试,如果它们改变Mongo实例的状态,这可能会非常棘手。如果这是一个问题,您可以编写一些脚本来重新初始化/销毁Mongo,并在上述阶段调用这些脚本。
- 1. JUnit:运行同时测试
- 2. 并行运行JUnit测试
- 3. 运行junit测试一定的时间
- 4. 类运行JUnit测试
- 5. 运行JUnit测试硒
- 6. 尝试运行JUnit测试运行器时出错
- 7. 运行Junit测试用例时OutofMemoryError
- 8. 当运行junit测试时发生ZipException
- 9. 同时运行JUnit测试用例
- 10. 运行Cucumber Junit测试时出错:Intializationerror
- 11. 运行时错误,当JUnit测试
- 12. java.lang.NoClassDefFoundError运行JUnit插件时,测试
- 13. 可以并行运行Junit测试吗?
- 14. 与Junit并行运行测试
- 15. JHipster&Gradle:运行STS的Junit测试
- 16. 运行JUnit测试的YML文件
- 17. 列出正在运行的jUnit测试
- 18. 不能运行JUnit测试到期类路径问题
- 19. 在Jenkins上运行JUnit Selenium测试问题
- 20. 从另一个JUnit测试类运行JUnit测试类
- 21. 从Jenkins运行Android模拟器以运行Robotium的Junit测试
- 22. 运行MERN测试的问题
- 23. 运行集成测试的问题EJB
- 24. 在Eclipse中运行Ant的JUnit测试问题。初学者问题
- 25. 无法在Eclipse中运行junit测试
- 26. 在终端运行JUnit测试
- 27. 如何使用Junit运行AndroidDriver测试?
- 28. 安卓JUnit测试没有运行
- 29. 如何一起运行Junit测试?
- 30. InitializationError而黄瓜运行JUnit测试
您的单元测试应该首先嘲笑与真实数据库的通信(除非它们只是使用JUnit框架完成的应用程序测试)。 –
@TimothyTruckle如果你正在谈论嘲弄孟戈司机,那么请不要这样做。这里是一篇关于为什么你不应该这样做的文章https://jaxenter.com/testing-the-database-layer-119366.html – tddmonkey
当您测试数据库*中的行为*时,文章参数是有效的。当你(* unit- *)在数据库之外测试业务逻辑时,你真的应该嘲笑数据库访问。 –