2013-11-12 5 views
1

Я хотел бы использовать случайный порт для аркиллиан. Так arquillian.xml я:arquillian с использованием случайного порта с вложенным tomcat7

<arquillian> 
    <container qualifier="tomcat7" default="true"> 
     <configuration> 
     ... 
     <property name="bindHttpPort">0</property> 
     ... 
     </configuration> 
    </container> 
    </arquillian> 

В моем тестовом модуле:

@ArquillianResource 
private URL base; 

Я надеюсь, что реальный порт (локальный_порт) используется Apache Tomcat (потому что да, это начать с случайный порт), но этот URL-адрес имеет 0 портов, один из которых не является случайным.

Итак, как получить доступ к этому?

ответ

3

Вы используете Apache Maven для проведения таких тестов? Вот как я это сделал. На Maven стороне я использую плагин buildhelper и безошибочный определить случайный порт и передать его в тестах как свойство системы

<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>reserve-network-port</id> 
     <phase>initialize</phase> 
     <goals> 
      <goal>reserve-network-port</goal> 
     </goals> 
     <configuration> 
      <portNames> 
      <portName>tomcat.http.port</portName> 
      </portNames> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
     <systemProperties> 
      <!-- Port used for Tomcat HTTP connector --> 
      <tomcat.http.port>${tomcat.http.port}</tomcat.http.port> 
     </systemProperties> 
     </configuration> 
    </plugin> 
</plugins> 

А потом я настроил arquillian с

<arquillian> 
    <container qualifier="tomcat" default="true"> 
    <configuration> 
     <property name="bindHttpPort">${tomcat.http.port:9090}</property> 
    </configuration> 
    </container 
</arquillian> 

Примечание: Я m используя значение по умолчанию для порта, когда я запускаю тест из своей IDE, чтобы избежать необходимости вручную его настраивать.

НТН

Приветствия,

+1

Я знаю, что! .Но нет, так как это не будет работать при использовании IDE (без использования этого кровавого m2e) –

+0

хорошо звучит хорошо. Спасибо друг!!! –

0

Вы можете использовать arquillian-доступный-порт-расширение.

Просто добавьте зависимость в вашем ПОМ

<dependency> 
    <groupId>com.github.mryan43</groupId> 
    <artifactId>arquillian-available-port-extension</artifactId> 
    <version>${arquillian-available-port-extension.version}</version> 
</dependency> 

и положить в arquillian.xml:

<property name="bindHttpPort">${available.port}</property> 

Это имеет преимущество работы как при работе в Maven и при работе в вашей IDE ,

https://github.com/mryan43/arquillian-available-port-extension