しおしお

IntelliJ IDEAのことなんかを書いてます

jax-rsなリソースクラスをArquillianを使ってテストしてみた

Arquillian REST Extension 1.0.0.Alpha3 Released · Arquillian Blog を見ながらやるとかなり簡単にできた。

テスト対象のリソースクラス

シンプルなこんな感じのリソースクラスをテスト対象に。。。

public class HelloResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String get() {
        return "hello";
    }
}

build.gradleに必要なライブラリを追加

  testCompile 'org.jboss.arquillian.junit:arquillian-junit-container:1.1.9.Final'
  testRuntime 'org.jboss.arquillian.container:arquillian-glassfish-embedded-3.1:1.0.0.CR4'
  testRuntime 'org.glassfish.main.extras:glassfish-embedded-all:4.1'
  testRuntime 'org.jboss.arquillian.extension:arquillian-rest-client-impl-jersey:1.0.0.Alpha3'

テストクラス

テストメソッドにテスト対象のリソースクラスをinjectすることができるので、あとはテスト対象メソッドを呼び出して結果をアサートするだけ。

@RunWith(Arquillian.class)
public class HelloResourceTest {

    @Deployment
    public static WebArchive createDeployment() {
        return ShrinkWrap.create(WebArchive.class, "hoge.war")
                .addClass(HelloResource.class);

    }

    @Test
    public void test(@ArquillianResteasyResource HelloResource resource) throws Exception {
        System.out.println("resource = " + resource);
        assertThat(resource.get(), is("hello"));
    }
}

テスト実行結果

実行できました。
f:id:sioiri:20150930150217p:plain

おわり。