JUnit で EJBContainer を使用して EJB をテストしています。テストされた Bean によって呼び出された別の EJB は、Bean を使用したテストによってモックされ@alternative
ます。このモック Bean は次のように構成さ<alternative>
れます。beans.xml
すべてがチャームのように機能し、EJB はテストされ、モックされたサービスを使用します。
質問: beans.xml を使用する代わりに、コードだけで同じことを行うことは可能ですか?
もちろん、abeans.xml
は優れた柔軟性を提供しますが@alternative
、同じ Bean に対して別のものを使用したい場合や、同じプロジェクト内の単一/他のテストに固有のものを選択する可能性がある場合があります。おそらく、別の解決策はbeans.xml
特定のテストに固有のものになるでしょうか(それを選択する方法についての質問があります)?
テスト コードの一部 (ExtensionMock は、テスト済みの EchoRemote 実装とテストの一部によって呼び出されます):
public class EchoTest {
private EJBContainer ejbContainer;
private Context ctx;
@Before
public void setUp() throws NamingException {
ejbContainer = EJBContainer.createEJBContainer();
ctx = ejbContainer.getContext();
}
@After
public void tearDown() {
ejbContainer.close();
}
@Test
public void testFindAll() {
try {
EchoRemote userEJB = (EchoRemote) ctx.lookup("java:global/ssb-ejb/Echo!examples.ssb.EchoRemote");
assertNotNull(userEJB);
assertEquals("Hello World", userEJB.echo("Hello World"));
} catch (NamingException e) {
throw new AssertionError(e);
}
}
}
<beans>
<alternatives>
<class>examples.ssb.EchoExtensionMock</class>
</alternatives>
</beans>