JerseyTest默认端口更改为测试REST WEB服务

时间:2016-10-01 14:46:45

标签: java web-services rest java-ee jersey-test-framework

我做了一个测试用例来测试我的Rest Web服务。但在测试用例中,我发现请求是默认的泽西测试框架端口http://localhost:9998,而我的服务是http://localhost:8080上的注册。我无法找到如何将其端口更改为8080

public class UMServiceTest extends JerseyTest {


    @Override
    public Application configure() {
        enable(TestProperties.LOG_TRAFFIC);
        enable(TestProperties.DUMP_ENTITY);
        return new ResourceConfig(UMService.class);
    }    


    @Test
    public void testFetchAll() {
        System.out.println(getBaseUri()+"==========");
        Response output = target("usermanagement").path("um").path("user").request().get();
        assertEquals("should return status 200", 200, output.getStatus());
        //assertNotNull("Should return list", output.getEntity());
    }

4 个答案:

答案 0 :(得分:3)

您可以在运行测试时提供命令行参数,例如

的Maven 的 mvn yourpack.UMServiceTest -Djersey.config.test.container.port=8080

或者在eclipse中你可以在运行配置'参数'标签中传递它

答案 1 :(得分:1)

除了kuhajeyan的回答,还有JerseyTest端口的maven配置:

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                ....
                <systemProperties>
                    <property>
                        <name>jersey.config.test.container.port</name>
                        <value>4410</value>
                    </property>
                </systemProperties>
            </configuration>
        </plugin>

答案 2 :(得分:1)

您也可以从JerseyProtest的TestProperties中更改系统属性。

public class UMServiceTest extends JerseyTest
{
    static
    {
        System.setProperty("jersey.config.test.container.port", "0");
    }
...

答案 3 :(得分:0)

从 Jersey 2.33 开始,configure 方法可以设置为来自 Jersey Docs 的以下示例

@Override
protected Application configure() {
    // Find first available port.
    forceSet(TestProperties.CONTAINER_PORT, "0");

    return new ResourceConfig(Resource.class);
}

如果使用 configureDeployment 指定资源,可以使用以下方法。

  @BeforeClass
  public static void beforeClass() {
    System.setProperty(
        // Use a random available port
        "jersey.config.test.container.port", String.valueOf(SocketUtils.findAvailableTcpPort()));
  }

  @AfterClass
  public static void afterClass() {
    System.clearProperty("jersey.config.test.container.port");
  }

  @Override
  protected DeploymentContext configureDeployment() {
    return ServletDeploymentContext.forServlet(
            new ServletContainer(ResourceConfig.forApplicationClass(TestApplication.class)))
        .contextPath("/cas/api")
        .build();
  }

来源:https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/test-framework.html#parallel