2015-01-30 2 views
0

У меня есть несколько стандартных тестов интеграции junit с arquillian, tomcat7 embedded (arquillian-tomcat-embedded-7: 1.0.0.Final-SNAPSHOT, tomcat-embed-core : 7.0.50) и Shrinkwrap.Адрес уже используется, если тесты интеграции 2+ arquillian

@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, проверьте и запустите весь testuite, я получаю: 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> 

ответ

1

Похоже МВН проверить пытается запустить тесты параллельно. Или, по крайней мере, не дожидаться, когда предыдущий тест будет очищен, прежде чем он начнет следующий. У вас не может быть более одного процесса привязки к одной и той же комбинации адресов/портов.

Разъемы Tomcat поддерживают концепцию использования нового бесплатного порта каждый раз, когда они начинают избегать подобных проблем (установите порт на ноль), но я не думаю, что сам по себе поможет вам. Ваша тестовая среда должна знать, чтобы запросить Tomcat, чтобы узнать, какой порт использовать для каждого теста.

Я бы попытался изменить ваши тесты, чтобы они не запускались параллельно.

+0

Я не добавлял никаких параметров для параллельного выполнения теста для уверенности. Я скорее думаю, что Tomcat1 не полностью остановлен, когда tomcat2 уже запускается. Для jboss-arquillian-embedded существует опция конфигурации для добавления диапазона портов для использования, если текущий порт используется ... :( – Ginkgochris

+0

Спасибо! –

Смежные вопросы