使用docker进行持续交付的集成testing

我目前正在开发一个产品,公开一个REST API,最终将托pipe在云端。

我的技术堆栈是在maven之上的spring(启动,mvc,数据,testing等)。 我有集成testing来testing从我的API连接到testing数据库。

为了更好地testing我的产品在相同的环境下运行的生产,我想用一个容器来执行我的集成testing。 我的目标是遵循这个持续交付工作stream程:

  • 运行unit testing
  • 构build应用程序(jar)并将其部署到中央存储库
  • 使用这个档案创build一个docker容器
  • 启动容器(使用弹簧启动)
  • 对正在运行的容器运行集成testing
  • 运行性能testing
  • 如果一切正常,请将此容器部署到中央存储库
  • 部署这个相同的容器来刺激(只使用不同的命令行参数)。

这种方法的优点是具有相同的容器forms集成testing阶段到生产,这似乎是理想的,不是吗?

不过,我不知道如何使用我的源代码包中的spring mvctesting。 我怎么能用mockmvc做这样的事情? 它如何足够灵活地在开发中运行集成testing呢?

有没有人尝试过这种方法? 我在这里想念什么?

提前致谢

Spring MVCtesting框架 (即MockMvc不能用于testing部署在Servlet容器中的Spring Web应用程序。

相反, Spring MVCtesting框架的主要目标是提供一stream的“ 支持通过stream畅的APItesting客户端和服务器端的Spring MVC代码 ”。 此外,它“ 使用DispatcherServlet来处理请求,从而接近完整的集成testing,而不需要运行Servlet容器”。

上面引用的文本直接来自Spring Framework参考手册。

总之, Spring MVCtesting框架只能用于集装箱外集成testing。 如果你想testing你的基于Spring的Web应用程序部署在一个Servlet容器中,你将需要使用其他框架,如HtmlUnit,HttpUnit,Selenium等

问候,

山姆

我一直在研究涵盖大多数项目符号的演示代码,除了最后3篇。我刚刚创build了一篇博文: 集成testing使用Spring Boot,Postgres和Docker ,它引用Postgres的几个bitbucket回购DB Docker镜像(Docker集线器中的可用镜像)以及Spring Boottesting演示。

它基本上使用Spring的TestExecutionListener的自定义实现来挂钩到testing方法的生命周期,以pipe理在执行testing之前和之后拖动Docker镜像,启动/停止Docker容器。 它可以为所有的集成testing使用相同的容器,或者可以为每个testing启动一个新的容器,它是可configuration的。

最好的,奥兰多