【发布时间】:2012-08-07 06:10:59
【问题描述】:
我正在尝试在 netbeans 中使用 JUnit 测试无状态 bean。此 bean 使用 EntityManager。
@Stateless
public class myEjb{
@PersistenceContext
private EntityManager em;
public MyResult getResult(){
return em.find(...);
}
}
然后我写一个测试类。
public class myTest{
private static EJBContainer ec;
private static Context ctx;
@BeforeClass
public static void setUpClass(){
ec = EJBContainer.createEJBContainer();
ctx = ec.getContext();
}
....
}
当我运行测试时,它不起作用。我收到以下消息: 无效资源:mydb__pm 执行此行时出现错误:
ec = EJBContainer.createEJBContainer();
如果通过删除实体管理器来更改我的 bean,它会起作用。所以,看来我的实体管理器有问题。 我的 persistence.xml 文件很简单:
<persistence version="2.0" ...>
<persistence-unit name="MetisDemoPU" transaction-type="JTA">
<jta-data-source>MyDb</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
最后,我创建了一个 JSF 托管 bean,它调用我的 EJB(它使用实体管理器)并且它可以工作。
@ManagedBean
@RequestScoped
public class myManagedBean{
@EJB
private OfferEjb offerEjb;
...
}
任何帮助将不胜感激!
【问题讨论】:
标签: junit persistence java-ee-6 entitymanager