私はJUnitでテストしたいジャージリソースを持っています。リソースが特定のフィールドを注入するGuiceのプロバイダを使用しています。Guiceのフィールドを注入したJerseyリソースのユニットのテスト
@Path("/example/")
class ExampleResource {
@Inject
Provider<ExampleActionHandler> getMyExampleActionHandlerProvider;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<ExamplePojo> getExampleList() {
ExampleActionHandler handler = getMyExampleActionHandlerProvider.get();
handler.doSomething();
...
しかし、それは問題があるテスト、APIを提供するために実サーバを使用する場合、すべてが美しく動作します。
私のテストクラスが現在のようなものになります。
明らかにpublic class ApiTest extends JerseyTest {
public ApiTest() throws Exception {
super();
ApplicationDescriptor appDescriptor = new ApplicationDescriptor();
appDescriptor.setContextPath("/api");
appDescriptor.setRootResourcePackageName("com.my.package.name");
super.setupTestEnvironment(appDescriptor);
}
@Test
public void testHelloWorld() throws Exception {
String responseMsg = webResource.path("example/").get(String.class);
Assert.assertEquals("{}", responseMsg);
}
}
を、Guiceのはhandler.doSomething()
呼び出しはNullPointerExceptionが生じないようにExampleResource
でフィールドを初期化する機会を得ていません。
Jerseyに、Guiceを使用してExampleResourceクラスをインスタンス化してプロバイダが動作するように指示する方法はありますか?
でそれからApplicationDescriptorオブジェクトを取得? – talon8
@minichateあなたはこれを稼働させましたか? –