我目前开发的产品公开了一个REST API,最终将托管在云上。
我的技术堆栈是maven上的spring(boot,mvc,data,test等)。我有集成测试来测试连接到测试数据库的API。
为了更好地在与生产相同的环境中测试我的产品,我想使用容器来执行我的集成测试。我的目标是遵循这种持续交付工作流程:
这种方法的优点是具有相同的容器形式集成测试阶段到生产,这似乎是理想的,不是吗?
但是我不知道如何使用驻留在我的源包中的spring mvc测试。我怎么能用mockmvc做这样的事情?如何灵活地在开发中运行集成测试呢?
有没有人尝试过这样的方法?我在这里想念一下吗?
提前致谢
答案 0 :(得分:1)
Spring MVC测试框架(即MockMvc
)可以不用于测试部署在Servlet容器中的Spring Web应用程序。
相反, Spring MVC测试框架的主要目标是提供一流的" 支持,通过流畅的方式测试客户端和服务器端的Spring MVC代码API &#34。此外," 使用DispatcherServlet
来处理请求,从而近似完整集成测试,而无需运行的Servlet容器。"
上面引用的文字直接来自Spring Framework参考手册。
总之, Spring MVC测试框架只能用于容器外集成测试。如果您希望测试部署在Servlet容器中的基于Spring的Web应用程序,则需要使用其他框架,如HtmlUnit,HttpUnit,Selenium等。
此致
萨姆
答案 1 :(得分:1)
我一直在研究涵盖你指出的大部分项目符号的演示代码,除了最后一篇。我刚创建了一篇博文:Integration Testing using Spring Boot, Postgres and Docker,它引用了Postgres DB的几个bitbucket repos Docker镜像(Docker hub中的可用图像)和Spring Boot测试演示。
它基本上使用Spring的TestExecutionListener的自定义实现来挂钩测试方法生命周期,以便在测试执行之前和之后管理拉动Docker镜像,启动/停止Docker容器。它可以使用相同的容器进行所有集成测试,也可以为每个测试启动一个新容器,它是可配置的。
最佳, 奥兰多