Jersey Test フレームワークに関するドキュメントを読み、 JerseyTest の target メソッドを使用して、自分のファイル内の @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 注釈付きエンドポイントに到達したいと考えています。どうすればいいですか?問題は、他のファイルが実際の製品コードであるため、クラスを静的にできないことです。ただし、他のパスのエンドポイントには到達可能です。