EJB 3 JUnit testing with OpenEJB 3.1.4

This is quick example of how to create JUnit test to test the EJB 3.0 session bean. The approach is new innovation using @LocalClient. This will create EJB client for Java SE. The interface of the calculator class is,

package com.ojitha.calculator;

import javax.ejb.Local;

@Local
public interface CalculatorLocal {
 public int add(int a, int b);
}

This is the implement of the Calculator

package com.ojitha.calculator;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class Calculator
 */
@Stateless
public class Calculator implements CalculatorLocal {

    /**
     * Default constructor.
     */
    public Calculator() {

    }

 @Override
 public int add(int a, int b) {

  return a + b;
 }

}

Let's look at the openEJB based JUnit test class

package com.ojitha.calculator;

import static org.junit.Assert.*;

import java.util.Properties;

import javax.ejb.EJB;
import javax.naming.InitialContext;

import org.apache.openejb.api.LocalClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

@LocalClient
public class CalculatorTest {

 @EJB CalculatorLocal calculator ;

 @Before
 public void setUp() throws Exception {
       Properties p = new Properties();
       p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
       InitialContext initialContext = new InitialContext(p);
       initialContext.bind("inject", this);

 }

 @After
 public void tearDown() throws Exception {
 }

 @Test
 public void testAdd() {
  assertEquals(6, calculator.add(4, 2));
 }

}

here the output

Apache OpenEJB 3.1.4    build: 20101112-03:32
http://openejb.apache.org/
INFO - openejb.home = /home/ojitha/workspace/EJBExample1
INFO - openejb.base = /home/ojitha/workspace/EJBExample1
INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Found EjbModule in classpath: /home/ojitha/workspace/EJBExample1/build/classes
INFO - Beginning load: /home/ojitha/workspace/EJBExample1/build/classes
INFO - Configuring enterprise application: classpath.ear
INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
INFO - Auto-creating a container for bean Calculator: Container(type=STATELESS, id=Default Stateless Container)
INFO - Enterprise application "classpath.ear" loaded.
INFO - Assembling app: classpath.ear
INFO - Jndi(name=CalculatorLocal) --> Ejb(deployment-id=Calculator)
INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Stateless Container)
INFO - LocalClient(class=com.ojitha.calculator.CalculatorTest, module=classes)
INFO - Deployed Application(path=classpath.ear)

Comments

Popular posts from this blog

How To: GitHub projects in Spring Tool Suite

Spring 3 Part 7: Spring with Databases

Parse the namespace based XML using Python