我正在尝试在 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();
}
....
}
当我运行测试时,它不起作用。我收到以下消息: Invalid resource : 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>
最后,我创建了一个名为 EJB(它使用实体管理器)的 JSF 托管 bean,它可以工作。
@ManagedBean
@RequestScoped
public class myManagedBean{
@EJB
private OfferEjb offerEjb;
...
}
任何帮助,将不胜感激!