EJB3Unitでグリップを取得しようとしていますが、EJB 3.1のステートレスBeanをユニットテストするためにEJBに「ビジネスインタフェース」がないためにEJB3Unitがエラーになります。しかし、私はこの "ビジネスインタフェース"のすべてがEJB 2の遺物だと思ったので、私はそれを必要とすべきではありません。これは、私がEJB3Unitを間違って使用しているためですか? EJB3Unitをユニットテストのために動かすにはどうすればいいですか?EJB3Unitは@LocalBeanのビジネスインタフェースを要求します
マイEJBは、本質的にこれです:
:ユニットテストは、ため、次の例外の失敗package uk.co.nildram.badamson.aoc4;
public final class AocServiceTest extends BaseSessionBeanFixture<AocService> {
private static final Class<?>[] USED_ENTITY_BEANS = {};
public AocServiceTest() {
super(AocService.class, USED_ENTITY_BEANS);
}
@Test
public void testCreateSessionBean() {
final AocService bean = getBeanToTest();
checkInvariants(bean);
}
public static void checkInvariants(final AocService service) {
// assertions
}
// Other code
}
:
package uk.co.nildram.badamson.aoc4;
@Stateless
@LocalBean
public class AocService {
@PersistenceContext(unitName = "aoc4")
private EntityManager entityManager;
// Other code
}
マイユニットテストクラスは、本質的にこれです
java.lang.IllegalStateException: No business interface found on class 'uk/co/nildram/badamson/aoc4/AocService'.
at com.bm.ejb3metadata.annotations.helper.bean.session.SessionBusinessInterfaceFinder.resolve(SessionBusinessInterfaceFinder.java:86)
at com.bm.ejb3metadata.annotations.helper.bean.SessionBeanHelper.resolve(SessionBeanHelper.java:69)
at com.bm.ejb3metadata.annotations.helper.ResolverHelper.resolve(ResolverHelper.java:91)
at com.bm.ejb3metadata.MetadataAnalyzer.analyze(MetadataAnalyzer.java:82)
at com.bm.ejb3metadata.MetadataAnalyzer.analyzeClasses(MetadataAnalyzer.java:49)
at com.bm.ejb3metadata.MetadataAnalyzer.initialize(MetadataAnalyzer.java:36)
at com.bm.ejb3metadata.annotations.metadata.MetaDataCache.getMetaData(MetaDataCache.java:129)
at com.bm.ejb3metadata.annotations.metadata.MetaDataCache.getDynamicModuleCreator(MetaDataCache.java:105)
at com.bm.creators.SessionBeanFactory.getInjector(SessionBeanFactory.java:78)
at com.bm.creators.SessionBeanFactory.createSessionBean(SessionBeanFactory.java:60)
at com.bm.testsuite.BaseSessionBeanFixture.setUp(BaseSessionBeanFixture.java:92)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
例外をスローするコードはhttp://ejb3unit.sourceforge.net/xref/com/bm/ejb3metadata/annotations/helper/bean/session/SessionBusinessInterfaceFinder.htmlのようです。これは実際には "javax/ejb"インタフェースを要求しているようです。しかし、私は@LocalBean
を持っているので、私のクラスはインターフェースを必要とすべきではありません。
、同じ問題が発生します。 – Raedwald