Arquillian использует случайный порт с включенным tomcat7
Я хотел бы использовать случайный порт для Arquillian. Так в arquillian.xml я делаю:
<arquillian>
<container qualifier="tomcat7" default="true">
<configuration>
...
<property name="bindHttpPort">0</property>
...
</configuration>
</container>
</arquillian>
В моем модульном тесте:
@ArquillianResource
private URL base;
Я надеюсь, что реальный порт (localPort) используется Apache Tomcat (потому что да, он начинается со случайного порта), но этот URL-адрес с 0 портом, а не из случайного.
Так как получить доступ к этому?
2 ответа
Используете ли вы Apache Maven для запуска таких тестов? Вот как я это сделал. На стороне Maven я использую плагин buildhelper и surefire, чтобы определить случайный порт и передать его в тесты как системное свойство.
<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>
Примечание: я использую значение по умолчанию для порта, когда запускаю тест из своей IDE, чтобы избежать необходимости настраивать его вручную.
НТН
Ура,
Вы можете использовать расширение arquillian-available-port-extension.
Просто добавьте зависимость в свой пом
<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