0

我已阅读有关 Jersey Test 框架的文档,并已成功使用 JerseyTest 的目标方法在我自己的文件中到达 @Path 注释的端点。简化代码如下。

public class TestApplication extends ResourceConfig {
    public TestApplication() {
        registerClasses(TestService.class);
    }
}

@Override
protected Application configure() {
    return new TestApplication();
}

@Path("create")
public static class TestService {
    @POST
    @Path("testObj")
    @Consumes(APPLICATION_JSON)
    public static Response createTestObj(final TestObj testObj) {
        return Response.ok("testObj created").build();
    }
}

@Test
private void ensureObjectCreated() {
    JSONObject myObj = createNewObj();
    final Response response = target("create/testObj").request(APPLICATION_JSON)
                              .post(Entity.json(myObj.toString()));
    Assert.isEqual(response.status, 200);
}

现在我想到达其他文件/目录中的 @Path 注释端点。我该怎么做?问题可能是其他文件是实际的生产代码,所以我不能使类静态。但是,其他路径中的端点是可以到达的。

4

1 回答 1

0

只需在资源配置中单独注册它们(取决于测试的范围),或者指定一个包以使用该packages方法进行扫描。

@Override
public ResourceConfig configure() {
    return new ResourceConfig()
        .register(SomeResource.class)
        .packages("your.resource.package.to.scan");
}

示例中的类的唯一原因static是因为它是一个需要由框架实例化的内部类。

当您访问资源时,它将不包括根应用程序路径,仅包括@Path类上的值以及任何子路径,就像在上面的代码中一样。

于 2016-02-03T18:22:41.767 回答