Testing an EJB with JUnit

Viewed 75367

How should I test an EJB 3.1 which gets an instance of EntityManager injected?

A possible EJB:

@Stateless
@LocalBean
public class CommentService {

    @PersistenceContext
    private EntityManager em;

    public List<Comment> findAll() {
        TypedQuery<Comment> query = em.createNamedQuery(
            Comment.FIND_ALL, Comment.class
        );
        return query.getResultList();
    }

}

A possible test:

@Test
public void testFindAll() {
    List<Comment> all = service.findAll();
    Assert.assertEquals(8, all.size());
}

I am only using GlassFish 3.1 and Eclipse Indigo for Java EE Developers. I already tried things like that:

@Before
public void setUp() throws Exception {
    ejbContainer = EJBContainer.createEJBContainer();
    service = (CommentService) ejbContainer.getContext()
        .lookup("java:global/classes/CommentService");
}

But all I got was:

javax.ejb.EJBException:
No EJBContainer provider available: no provider names had been found.
4 Answers
Related