Arquillianを使った本物のJava EEテスト その2
JBoss Advent Calendar 2011の18日目のエントリです。
昨日例に挙げたテストコードを一通り見ていきましょう。今回はJUnitを使っていますが、TestNGも使えます。
@RunWith(Arquillian.class) public class MailBeanTest { @Inject MailBean mailBean; @Deployment public static Archive<?> createTestArchive() { return ShrinkWrap.create(JavaArchive.class, "test.jar") .addClasses(MailBean.class) .addAsResource(EmptyAsset.INSTANCE, "META-INF/beans.xml"); } @Test public void callSendTestMessage() throws Exception { mailBean.sendTestMessage(); assertTrue(true); // ok, no exception } }
Arquillian有効化
JUnitのRunWithアノテーションでJUnitのRunnerを継承しているArquillian.classを指定します。これでArquillianが有効になります。
@RunWith(Arquillian.class) public class MailBeanTest {
テスト対象クラスのInject
テストコードでも普通のコードと同じようにMailBeanを@Injectで取得できます。
@Inject
MailBean mailBean;
テスト対象のデプロイ
@Deploymentアノテーションが付与されているメソッドでは、ShrinkWrapを利用してアーカイブを作成して返却します。ShrinkWrapはArquillian内部で利用されているパッケージングライブラリです。ここで作成されたアーカイブがテスト時にデプロイされます。
@Deployment public static Archive<?> createTestArchive() { return ShrinkWrap.create(JavaArchive.class, "test.jar") .addClasses(MailBean.class) .addAsResource(EmptyAsset.INSTANCE, "META-INF/beans.xml"); }