我有几个'标准'与arquillian,tomcat7嵌入式(arquillian-tomcat-embedded-7:1.0.0.Final-SNAPSHOT,tomcat-embed-core:7.0.50)和Shrinkwrap的junit集成测试。
@RunWith(Arquillian.class)
public class TestMe {
@Deployment
public static WebArchive deploy() {
return
ShrinkWrap.create(WebArchive.class, "test.war")
.addPackages(true, "org.foo")
.addAsManifestResource("META-INF/context.xml", "context.xml")
.addAsWebInfResource("WEB-INF/beans.xml", "beans.xml")
.addAsWebInfResource("WEB-INF/web.xml", "web.xml").as(WebArchive.class);
}
@Test ...
}
通过maven分别执行,每个测试都是绿色的。但是,如果我执行 mvn verify 并启动整个测试套件,我会得到: java.net.BindException:地址已在使用中:JVM_Bind:9095 。有什么问题?
arquillian.xml:
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<defaultProtocol type="Servlet 3.0" />
<engine>
<property name="deploymentExportPath">target</property>
</engine>
<container qualifier="tomcat" default="true">
<configuration>
<property name="unpackArchive">true</property>
<property name="bindAddress">localhost</property>
<property name="bindHttpPort">9095</property>
<property name="serverName">amgui-arquillian-tomcat7-embedded</property>
</configuration>
</container>
答案 0 :(得分:1)
看起来mvn verify试图并行运行测试。或者至少不等待先前的测试在开始下一个测试之前进行清理。您不能将多个进程绑定到同一个地址/端口组合。
Tomcat连接器支持每次开始使用新的自由端口以避免这些问题(将端口设置为零)的概念,但我不认为它本身会对您有所帮助。您的测试环境需要知道查询Tomcat以找出每个测试使用的端口。
我会尝试修改你的测试,以免它们并行运行。