如何使用在docker中运行的mysql运行maven测试(使用maven-surefire-plugin)

时间:2018-01-15 17:38:20

标签: java mysql maven docker junit

我发现了几个帖子,解释了如何运行集成测试,以及maven和docker。他们基本上解释了hoy使用/ setup fabric8 maven-docker-plugin和maven failsafe插件。

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

我不依赖于fabric8。如果在开始我的测试之前还有另一种启动docker镜像的方法,并且在测试运行完成后停止/终止它,那将对我有所帮助。

提前致谢。 马克西

1 个答案:

答案 0 :(得分:0)

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

有很多在线教程,例如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