0 Replies Latest reply on Jan 10, 2011 9:52 AM by marcusdidiusfalco

    JUnit Testing EJBs in Eclipse

    marcusdidiusfalco

      Hallo 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