在运行JUnit时,使用CDI bean注入EJB 3.1的问题

我使用@inject创建了一个EJB3.1并注入了CDI bean,但是在unit testing时遇到了一些问题,但是当从servlet测试它工作正常时。 我在WEB-INF文件夹中有beans.xml。 下面是我的EJB代码:

@Stateless public class CdiUsingEjb { @Inject private HelloServletCDIPojo helloServletCDIPojo; public String greet() { assert helloServletCDIPojo != null; return helloServletCDIPojo.from(); } } 

下面是我的CDI bean:

 public class HelloServletCDIPojo { public String from() { return "from HelloServletStateless CDI"; } } 

我创建了一个JUnit类:

 public class CdiUsingEjbTest { @EJB private CdiUsingEjb cdiUsingEjb; @Before public void setUp() throws Exception { EJBContainer.createEJBContainer().getContext().bind("inject", this); } @Test public void test() { assertNotNull(cdiUsingEjb); } } 

当我运行此JUnit测试时,我收到以下错误。

 org.apache.openejb.OpenEjbContainer$AssembleApplicationException: org.apache.openejb.OpenEJBException: Creating application failed: /Users/prasannakumar/freelanceWorkspace/javaWorkspace/TomEEExamples: couldn't start owb context at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:310) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:43) at in.jugchennai.prassee.ejb.HelloServletStatelessEJBTest.setup(HelloServletStatelessEJBTest.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601)