使用 Jersey Test Framework 以其他文件中的 API 为目标
Using Jersey Test Framework to target APIs in other files
我已阅读 the documentation 有关 Jersey 测试框架的内容,并已成功使用 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);
}
现在我想到达另一个 files/directories 中的 @Path 注释端点。我该怎么做?问题可能是其他文件是实际的生产代码,所以我不能使 类 静态化。但是其他路径中的端点是可达的。
只需在资源配置中注册它们,可以单独注册(取决于测试范围),也可以使用 packages
方法指定要扫描的包。
@Override
public ResourceConfig configure() {
return new ResourceConfig()
.register(SomeResource.class)
.packages("your.resource.package.to.scan");
}
示例中的class是static
的唯一原因是因为它是一个需要由框架实例化的内部class。
当您访问资源时,它不会包括根应用程序路径,仅包括 class 上的 @Path
值,以及任何子路径,就像您在上面的代码中一样。
我已阅读 the documentation 有关 Jersey 测试框架的内容,并已成功使用 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);
}
现在我想到达另一个 files/directories 中的 @Path 注释端点。我该怎么做?问题可能是其他文件是实际的生产代码,所以我不能使 类 静态化。但是其他路径中的端点是可达的。
只需在资源配置中注册它们,可以单独注册(取决于测试范围),也可以使用 packages
方法指定要扫描的包。
@Override
public ResourceConfig configure() {
return new ResourceConfig()
.register(SomeResource.class)
.packages("your.resource.package.to.scan");
}
示例中的class是static
的唯一原因是因为它是一个需要由框架实例化的内部class。
当您访问资源时,它不会包括根应用程序路径,仅包括 class 上的 @Path
值,以及任何子路径,就像您在上面的代码中一样。