【问题标题】:Integration Testing against a service in docker针对 docker 中的服务进行集成测试
【发布时间】:2018-03-02 14:26:19
【问题描述】:

我有一个正在测试的微服务(带有 JUnit 的 Java maven 项目)。这依赖于另一个微服务。我正在编写一个 e-2-e 系统测试,并希望从 Docker 映像启动外部服务以进行全自动测试。

我的问题是让 maven 项目启动 docker 镜像实例的最佳方式是什么,然后可以在自动化测试套件中使用?

目前我使用 maven-exec 插件在启动 docker 容器的集成阶段调用 shell 脚本。这可能不是最优雅的解决方案,而且我也无法知道容器何时准备就绪。

任何想法或帮助将不胜感激。

请注意:这是针对真实服务的完整系统测试,因此我不想模拟或存根外部服务。

【问题讨论】:

  • 可能值得考虑:testcontainers.org
  • 您是否考虑过使用docker-compose,将 Maven 作为您在一个容器中的入口点,而其他容器运行相关服务?

标签: java maven unit-testing docker docker-compose


【解决方案1】:

看看Spotify maven plugin for docker 或Fabric8 maven pluign

Fabric8 的目标是构建、运行和停止。这可能无法帮助您了解容器是否已准备好进行测试。 (您能否在您的测试代码中提供一种 ping 服务来暂停测试,直到您获得 OK 200?)

【讨论】:

  • 您可以wait 了解容器上的某些条件,以确定它是否已准备好进行测试。 Here 是一个发送 HTTP 'pings' 并等待返回特定 HTTP 响应代码的示例配置。
  • @MikeJ 很高兴听到它符合您的需求 :)
猜你喜欢
  • 1970-01-01
  • 2011-08-17
  • 2017-08-07
  • 1970-01-01
  • 2013-02-16
  • 2020-11-07
  • 2020-03-08
  • 1970-01-01
  • 2018-06-11
相关资源
最近更新 更多