我想为arquillian使用随机端口。 所以在arquillian.xml中 我这样做:
<arquillian>
<container qualifier="tomcat7" default="true">
<configuration>
...
<property name="bindHttpPort">0</property>
...
</configuration>
</container>
</arquillian>
在我的单元测试中:
@ArquillianResource
private URL base;
我希望拥有Apache Tomcat使用的真实端口(localPort)(因为它是从一个随机端口开始)但是这个URL是0端口配置而非随机端口。
那么如何访问这个?
答案 0 :(得分:3)
您是否正在使用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启动测试时,我正在使用端口的默认值,以避免必须手动配置它。
HTH
干杯,
答案 1 :(得分:0)
您可以使用arquillian-available-port-extension。
只需在你的pom中添加依赖
<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