Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como testar um DAO em um projeto que EJB?

No curso de Teste de integração com DAO e SQL, utilizamos o @Before para criar uma transação e o @After para fazer o rollback e não salvar no banco de dados. Mas como fazer isso em um projeto que utiliza EJB e CDI, onde meu objeto EntityManager é injetado pelo CDI através do @PersistenceContext?

@Before public void antes() { // inicia transacao session.beginTransaction(); }

@After public void depois() { // faz o rollback session.getTransaction().rollback(); session.close(); }

public class AddressDAO {

@PersistenceContext private EntityManager manager;

public Address save(Address address){ if(address.isNew()){ manager.persist(address); return address; } return manager.merge(address); } }

public class AddressDAOTest {

// Como injetar o EntityManager aqui? }

1 resposta
solução!

Vixe, cenário complicado mesmo, infelizmente. Você precisa de alguém que levante um contexto de persistência e injete o entitymanager para você. Com o spring, isso é fácil. Ele já tem um módulo sobre testes e já toma conta. Se for um projeto apenas com javaee, você pode dar uma olhada no arquillian ou no deltaspike.