集成测试无法启动(Failsafe,Maven)
Posted
技术标签:
【中文标题】集成测试无法启动(Failsafe,Maven)【英文标题】:Integration tests wouldn't start (Failsafe, Maven) 【发布时间】:2011-01-21 13:59:12 【问题描述】:我正在尝试使用 Maven Failsafe Plugin 使用此配置运行我的集成测试:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.7.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.7</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>3600000</maxIdleTime>
</connector>
</connectors>
<contextPath>/</contextPath>
<scanIntervalSeconds>3</scanIntervalSeconds>
<scanTargetPatterns>
<scanTargetPattern>
<directory>src/main/webapp/WEB-INF</directory>
<excludes>
<exclude>**/*.jsp</exclude>
<exclude>**/*.html</exclude>
</excludes>
<includes>
<include>**/*.page</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</scanTargetPattern>
</scanTargetPatterns>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
在 Jetty 在预集成测试阶段启动之前,一切都很好。然后什么都没有发生,就好像它在等待什么。最后一行说:
[INFO] Started Jetty Server
我怎样才能让测试在之后立即开始?我使用mvn verify
运行 maven。
【问题讨论】:
我在 8.1.9 版本中遇到了同样的问题。 同 9.4.4.v20170414 【参考方案1】:jetty maven 插件版本从 6.1.7 更改为 6.1.26 解决了所有问题。
【讨论】:
我遇到了同样的问题。我还将版本升级到 6.1.26,但我的集成测试仍然没有运行。最后一行是:[INFO] Started Jetty Server。之后,什么也没有发生。 Maven 全新安装步骤卡住了。知道为什么会这样吗? 我对 9.4.4.v20170414 版本也有同样的问题。 @Jay Zus 的解决方案是正确的【参考方案2】:对于仍在寻找解决方案的人,我遇到了同样的问题,我通过替换解决了它
<goals>
<goal>run-war</goal>
</goals>
通过
<goals>
<goal>start</goal>
</goals>
之所以有效,是因为 run* 阻塞了执行,而 start 是非阻塞的。
【讨论】:
以上是关于集成测试无法启动(Failsafe,Maven)的主要内容,如果未能解决你的问题,请参考以下文章
Maven 构建和 maven-failsafe-plugin - 分叉的虚拟机在没有正确说再见的情况下终止