久违了,我又回到了 Java EE,所以我基本上不得不从头开始学习现代 EE。作为这项努力的一部分,我正在尝试边做边学。我有一个功能性沙箱可供使用——一个简单的应用程序,其中前端由一个 EJB 通过 JPA 与数据库通信提供支持。
为了帮助我学习,我正在尝试设置一些 JUnit 测试。不幸的是,它们不起作用,而且由于我在很多方面都没有超出“猴子看,猴子做”阶段,所以我很难解决我看到的问题。
以下是我为测试 MyEJB 而设置的代码,它被定义为@Stateless
and @LocalBean
。(如果重要的话,我正在运行 Glassfish/Eclipse。)
public class MyEJBTest {
private static EJBContainer ejbContainer;
private MyEJB myEJB;
@BeforeClass
public static void startTheContainer() {
ejbContainer = EJBContainer.createEJBContainer();
}
@Before
public void lookupABean() throws NamingException {
Object object = ejbContainer.getContext().lookup("java:global/simple-stateless/MyEJB");
assertTrue(object instanceof MyEJB);
myEJB = (MyEJB) object;
}
@AfterClass
public static void stopTheContainer() {
if (ejbContainer != null) {
ejbContainer.close();
}
}
@Test
public void testFind() {
MyEntity myEntity = myEJB.find(1);
assertTrue(myEntity != null);
assertEquals("First Row's Name", myEntity.getName());
}
}
当我将其作为 JUnit 测试运行时,我在startTheContainer()
调用中收到此错误:
javax.ejb.EJBException:没有可用的 EJBContainer 提供程序:没有找到提供程序名称。
我该如何解决?还是我的方法从根本上是错误的?