2
respostas

Como injetar um DAO em uma classe JUnit

Tenho uma classe simples, e estou tentando executá-la através do JUnit. Ocorre sempre a falha com um NullPointerException, por conta do dao que está sempre nulo

public class TestDao {

insira seu código aqui

@Inject AutorDao autorDao;

@Test public void incluiDados() { Autor silveira = new Autor("Paulo Silveira"); Autor cordeiro = new Autor("Gilliard Cordeiro"); Autor coelho = new Autor("Hébert Coelho ");

autorDao.salva(silveira); autorDao.salva(cordeiro); autorDao.salva(coelho);

}

2 respostas

É, não vai rolar mesmo. A implementação não cria o objeto relativo a sua classe de teste, consequentemente aquele @Inject não está servindo para muita coisa. Você precisa instanciar o Dao na mão.

Quando você executa o teste unitário, você não esta vinculado a um container, logo sua classe não foi instanciada pelo mesmo e a anotação @Inject não terá nenhuma influência, pois ninguem está "observando" ela.

Sugiro para o caso de construção de testes unitários você olhar algum framework de AOP (Orientação a Aspectos). O Spring faz esse papel muito bem, e com isso você conseguira injetar seus objetos simulando o comportamento do container.

Até mais