arquillian 使用嵌入 tomcat7 的随机端口

问题描述 投票:0回答:3

我想为 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,是配置中的端口,而不是随机端口。

那么如何访问这个?

jboss-arquillian embedded-tomcat-7
3个回答
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

干杯,


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


0
投票

这个问题最终得到了修复,并将在 arquillian-container-tomcat 版本 1.2.2.Final 中提供(请参阅:https://github.com/arquillian/arquillian-container-tomcat/milestone/2?close=1 ).

© www.soinside.com 2019 - 2024. All rights reserved.