arquillianを使用してGlassfishアプリケーションに含まれているJMSワーカーをテストしたいと思います(container-servicesを使用するため)。私の労働者は次のように見えます:
package queue.worker;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.MessageListener;
@MessageDriven(mappedName = "java:app/jms/MailQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })
public class MailWorker implements MessageListener {
public MailWorker() {
}
@Override
public void onMessage(javax.jms.Message inMessage) {
}
}
これはテストです:
package queueTest.worker;
import java.io.File;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import queue.worker.MailWorker;
@RunWith(Arquillian.class)
public class MailWorkerTest {
@Deployment
public static WebArchive createDeployment() {
WebArchive archive = ShrinkWrap
.create(WebArchive.class)
.addClasses(MailWorker.class)
.addAsWebInfResource(new File("src/test/resources/WEB-INF/glassfish-resources.xml"),
"glassfish-resources.xml")
.addAsWebInfResource(new File("src/main/webapp/WEB-INF/beans.xml"), "beans.xml");
return archive;
}
@Inject
protected MailWorker mailWorker;
@Test
public void sendRegisterMail() {
Assert.assertTrue(true);
}
}
このテストを実行すると、Glassfish-JSM-Queueが開始されます[1]が、次のエラーが発生します。
org.jboss.weld.exceptions.DeploymentException:WELD-001408インジェクションポイント[[field] @Inject protected queueTest.worker.MailWorkerTest.mailWorker]で、修飾子[@Default]を持つタイプ[MailWorker]の依存関係が満たされていません
Mailworker.classの「@MessageDrivern[...]」を削除して「@ApplicationScoped」に置き換えると、たとえば、すべてが正常に機能します。したがって、Arquillian全般に問題はないようですが、JMSに関連しています。
JMS / Queue-Workerをテストするにはどうすればよいですか?
[1] Dez 23、2012 12:42:08 AM com.sun.messaging.jms.ra.ResourceAdapter start情報:MQJMSRA_RA1101:GlassFish MQ JMSリソースアダプターの開始:ブローカーはEMBEDDED、接続モードはDirect Dez 23、2012 12: 42:10 AM com.sun.messaging.jms.ra.ResourceAdapter開始情報:MQJMSRA_RA1101:GlassFish MQ JMSリソースアダプターが開始されました:EMBEDDED