てきとうなメモ

本の感想とか技術メモとか

JerseyTest(v1.x)でListenerなどを扱う

最初からJerseyを使っていなくて、普通のServlet→Jerseyに変換というようなことをしたい場合、ServletContextListenerにアプリケーションの初期化コードとかを書いていてうまくテストできなかったりする。まあ、そのあたりもJersey化すれば良いのだけども、いじれない場合はテストコンテナにそのListenerを設定すれば良さげ。

JerseyTestは

    public JerseyTest(AppDescriptor ad) throws TestContainerException {
      ...
    }

というようなコンストラクタを持っていて、AppDescriptorはアプリケーションの設定クラスになっている。サブクラスのWebAppDescriptorはサーブレットコンテナの設定クラスになっているので、

public class SomeResourceTest extends JerseyTest {
    
  public SomeResourceTest() {
    super(
      new WebAppDescriptor.Builder("sample")
      .contextListenerClass(sample.servlet.SomeServletContextListener.class).build()
    );
  }
}

てな感じにするとSomeServletContextListenerを設定した状態でテストコンテナを起動してくれる。WebAppDescriptorに何を設定できるかはソースコードを見る。FilterやContext Paramも設定できそう。