【问题标题】:How to run maven test with mysql running in docker (using maven-surefire-plugin)如何使用在 docker 中运行的 mysql 运行 maven 测试(使用 maven-surefire-plugin)
【发布时间】:2018-01-15 17:38:20
【问题描述】:

我发现了几篇文章,解释了如何在 maven 和 docker 中运行集成测试。他们基本上解释了如何使用/设置 fabric8 maven-docker-plugin 和 maven failsafe 插件。

我想知道是否可以使用fabric8,例如,使用surefire。我的具体需求是:我需要运行我的测试(JUnit 测试),但首先我需要/想要启动一个运行 MySQL 的 docker 映像。

我没有绑定到 fabric8。如果有另一种方法可以在开始我的测试之前启动 docker 映像并在测试运行完成后停止/杀死它,那将对我有很大帮助。

提前致谢。 马克西

【问题讨论】:

    标签: java mysql maven docker junit


    【解决方案1】:

    是的,你绝对可以做到。这个想法是使用 maven docker 插件,例如 fabric8 docker plugin,并在测试阶段之前启动一个容器并在测试阶段之后停止它。 但请注意,连接到数据库的技术测试不是单元测试,它们应该是集成测试。

    网上有很多教程可以做到这一点,例如INTEGRATION TESTING WITH DOCKER AND MAVEN

    您可以通过更改 docker 插件运行时的阶段来适应单元测试。

    您可以将<phase>pre-integration-test</phase> 更改为在maven test 阶段之前开始的阶段,例如<phase>generate-test-resources</phase>,并在测试结束后停止容器,例如: <phase>prepare-package</phase>

    请注意,没有像集成测试那样好的阶段名称,因为在运行单元测试时启动外部服务并不理想。但无论如何它都有效。

    有关 maven 阶段的完整参考,请查看Introduction to the Build Lifecycle

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 2023-03-09
      • 2020-07-25
      • 2020-05-08
      • 2023-03-10
      • 2011-12-09
      • 2022-01-14
      • 2018-09-02
      相关资源
      最近更新 更多