Mocked session bean test

EJB3Unit is able to inject to annotated fields (using EJB 3 (JSR 220) annotations), mock objects. The MockedSessionBeanTest can be used to automate the dependency injection and execute easily test with mocked dependencies - to test beans in isolation!

THe above example shows a session bean with annotated fields. To test this class in isolation we want to inject mock objects for each annotated field.

public class MySessionBean implements IMySessionBean {

        @Resource(name = "java:/MSSqlDS")
        private DataSource ds;

        private SessionContext ctx;

        private EntityManager manager; 
        public void test_executeOperation() {

The basic test can be configured by extending the MockedSessionBeanTest class. The next example shows how to test the session bean MySessionBean:

public class MockedSessionBeanTest extends
                MockedSessionBeanTest<MySessionBean> {

         * Constructor.
        public MyockedSessionBeanTest() {


In the test method test_executeOperation() we can we define expectations on the mock DataSource ds that specify the methods that we expect to be called upon it during the test run.

public void test_executeOperation() {
        final DataSource ds = getMock(DataSource.class);

        context.checking(new Expectations() {{
        // call the expected operation

With the method getMock(type) we can retrieve the instance which will be injected when ejb3unit constructs the session bean (members annotated with @EJB, @Ressource ...). In this case we get the data source which was injected to the field

@Resource(name = "java:/MSSqlDS")
        private DataSource ds;

Using the injected JMock instances for your test

Please read the excellent documentation of the JMock project