久しぶりに Java EE に戻るので、基本的に最新の EE をゼロから学ばなければなりません。その努力の一環として、私は実際に学ぶことを試みています。JPA を介してデータベースと通信する EJB によってフロント エンドがサポートされるシンプルなアプリです。
学習を支援するために、いくつかの JUnit テストをセットアップしようとしています。残念ながら、それらは機能していません。私は多くの点で「モンキー シー、モンキー ドゥ」段階をはるかに超えていないので、私が見ている問題を解決する方法に困惑しています。
以下は、 MyEJB をテストするためにセットアップしたコードで、 と として定義され@Stateless
てい@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 プロバイダーがありません: プロバイダー名が見つかりませんでした。
これを修正するにはどうすればよいですか? または、私のアプローチは根本的に間違っていますか?