OpenEjb とコンテナが埋め込まれた Junit の助けを借りて、自分の Java-ee プロジェクトの単体テストと統合テストをいくつか作成しました。テストは Eclipse で正常に実行されており、Bean (CDI/EJB) が注入され、正常に動作しています。しかし、maven と Surefire でテストを開始すると、次のエラーが発生します。
WARNING: Handling the following exception
Throwable occurred: javax.enterprise.context.ContextNotActiveException: WebBeans context with scope type annotation @RequestScoped does not exist within current thread
at org.apache.webbeans.container.BeanManagerImpl.getContext(BeanManagerImpl.java:330)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:88)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.get(NormalScopedBeanInterceptorHandler.java:70)
at org.apache.webbeans.conversation.ConversationImpl$$OwbNormalScopeProxy0.isTransient(org/apache/webbeans/conversation/ConversationImpl.java)
at org.apache.wicket.cdi.ConversationPropagator.onUrlMapped(ConversationPropagator.java:322)
at org.apache.wicket.request.cycle.RequestCycleListenerCollection$9.notify(RequestCycleListenerCollection.java:208)
何が間違っている可能性がありますか?クラスパスの問題か何かのようですが、openwebbeans-spi と openwebbeans-impl を明示的に追加してもうまくいきませんでした。
テストクラスで次の行を使用します。
@ClassRule
public static final EJBContainerRule CONTAINER_RULE = new EJBContainerRule();
@Rule
public final InjectRule rule = new InjectRule(this, CONTAINER_RULE);
そして、私は次のopenejb-junit.propertiesを持っています:
openejb.validation.output.level=VERBOSE
openejb.deployments.classpath.include=.*org.mine.*
openejb.descriptors.output=true
openejb.ejbcontainer.close=single-jvm
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
助けてくれてありがとう。
こんにちは、ハルスです。