こちらの記事でJerseyとGuiceを連携させる方法を紹介ましたが、今回はJersey Test FrameworkとGuiceを連携させる方法を調べました。ポイントはApplicationのコンストラクタにHK2のServiceLocatorをどうやって注入するかだけ。
HelloResource.java
package web.resources;
import web.MyApplication;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class HelloResourceTest extends JerseyTest {
@Test
public void testHello() throws Exception {
String response = target("hello").request().get(String.class);
assertThat(response, is("Hello!"));
}
@Override
protected DeploymentContext configureDeployment() {
return DeploymentContext.newInstance(MyApplication.class);
}
}
JerseyTest.configureDeploymentをオーバーライドして、Class extends Application>を引数にとるDeploymentContextのファクトリメソッドを使うと、つつがなく注入されました。