Olá, eu sou um iniciante com arquillian e estou trabalhando com essas tecnologias:
jboss-as-7.1.1.Final
JSF 2
EJB3.1
Nas minhas classes de teste arquillian eu preciso usar EntityManager para complementar os testes, mas o EntityManager é sempre nulo. Estou tentando usar assim:
@PersistenceContext
EntityManager em;
@Test
public void test1() {
Assert.assertNotNull(em);
}
Nos EJBs o EntityManager é injetado perfeitamente, só que não em classes de testes arquillian.
Opa, obrigado pela resposta. Usei esse site para começar os testes, baseado nele e em outros tutoriais que encontrei, era para estar funcionando. Não identifico o que pode estar errado. Pretendo a partir do momento que o entityManager estiver funcionando criar o seguinte cenário de teste: chamar uma classe que vai inserir um usuário por exemplo, então farei um select diretamente com o entityManager para conferir se o usuário foi cadastrado.
[code]
@RunWith(Arquillian.class)
public class MainTest {
fiz um teste parecido com o seu, mas eu usei uma fabrica pra produzir os EntityManagers e usei a anotação @inject do cdi pra injetar no teste e funcionou legal
Acredito que no meu tb funcione, mas eu to tentando usar com @PersistenceContext pq como o arquillian funciona lá no servidor, teoricamente deveria funcionar. Acho que vou ter que usar um outro tipo de estratégia para esse tipo de verificação.
antes de mais nada, peço desculpas por ressuscitar o tópico, mas estou com um problema parecido com o teu. Como resolveste isso?
A titulo de informacao, injeto assim:
@PersistenceContext
EntityManager entityManager;
Quando executo em algum metodo qualquer de um managedbean de teste e com o servidor rodando, roda beleza.
Mas quando faço isso numa classe teste, dá pau, porque o entitymanager vem nulo.
Olha minha classe teste:
@Named(value = "cepTest")
public class CepTest {
@PersistenceContext
EntityManager entityManager;
public CepTest() {
}
@Before
public void setUp() {
// em = Persistence.createEntityManagerFactory("triplice_B2C").createEntityManager();
}
@Test
public void buscaCEPs() {
System.out.println(entityManager);
Query q = entityManager.createQuery("select o from VendaWeb");
System.out.println(q.getResultList());
}
}
o @PersistenceContext so funciona quando sua classe é gerenciada pelo servidor de aplicação, mas com vc ta usando uma classe de teste que esta gerenciando a classe é o junit, e ele não conhece a @PersistenceContext e não vai injetar o EntityManager