JUnit Testing EJBs in Eclipse
marcusdidiusfalco Jan 10, 2011 9:52 AMHallo I am trying to port my application from JEE5 (Unit Tests with OpenEJB) to JEE6 using JBoss (M5).
I have read that a JEE6 compliant container must support an embeddable Container.
I have the jars from the client dir in my classpath
The following code compiles but does not run:
[code]
package fencing.control.test;
import static org.junit.Assert.assertNotNull;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import fencing.control.FechterDAO;
import fencing.entity.Adresse;
import fencing.entity.Fechter;
import fencing.entity.Waffe;
public class FechterDAOTestJEE6 {
public static EJBContainer ejbC;
@BeforeClass
public static void setup() {
ejbC = EJBContainer.createEJBContainer();
}
@AfterClass
public static void tearDown() {
ejbC.close();
}
@Test
public void testNeuerFechter() throws NamingException {
Fechter fechter = new Fechter();
fechter.setVorname("bla");
fechter.setNachname("bla");
//...
FechterDAO fechterDAO = (FechterDAO) ejbC.getContext().lookup("FechterDAOBean/local");
assertNotNull(fechterDAO);
fechter = fechterDAO.addFechter(fechter);
assertNotNull(fechter);
assertNotNull(fechter.getId());
}
}
[/code]
[code]
javax.ejb.EJBException: Unable to instantiate container with factories []
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:101)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:79)
at fencing.control.test.FechterDAOTestJEE6.setup(FechterDAOTestJEE6.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
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)
java.lang.NullPointerException
at fencing.control.test.FechterDAOTestJEE6.tearDown(FechterDAOTestJEE6.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
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)
[/code]
What am I missing?
Thanks,
Hans