Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Classe de teste

Boa tarde estou com um erro em uma classe simples para testar métodos no banco

segue a classe:

package br.com.rprvidros.teste;

import java.util.List;

import br.com.rprvidros.daos.ProdutoDao;
import br.com.rprvidros.models.Produtos;

public class TestaCategoria {

    public static void main(String[] args) {

        List<Produtos> listar = new ProdutoDao().listar();
        for (Produtos produtos : listar) {
            System.out.println(produtos.getCor());
        }
    }


}

quando tento executar é retornado erro:

Exception in thread "main" java.lang.NullPointerException
    at br.com.rprvidros.daos.ProdutoDao.listar(ProdutoDao.java:23)
    at br.com.rprvidros.teste.TestaCategoria.main(TestaCategoria.java:12)

classe ProdutoDao:

package br.com.rprvidros.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import br.com.rprvidros.models.Produtos;

@Repository
@Transactional
public class ProdutoDao {

    @PersistenceContext
    private EntityManager manager;

    @Bean
    public List<Produtos> listar() {
        return (List<Produtos>) manager.createQuery("select p from Produtos p").getResultList();
    }

    @Bean
    public List<Produtos> produtoCategoria(String categoria) {
        String hql = "select p from Produtos p where p.categoria.nome = :categoria";
        return manager.createQuery(hql).setParameter("categoria", categoria).getResultList();
    }
}

esse método listar ele funciona tanto que que me retorna para uma jsp normalmente, mas se tento executar na classe de teste ele me da erro, acredito que seja o manager que esteja null.

esta faltando alguma configuração?

4 respostas

Gabriel, tudo bem ?

O que você disse é exatamente o que está acontecendo, você está criando na mão o dao e ai o Spring não injeta nada para você.

Você pode dar uma olhadinha no nosso curso de testes de integração, onde mostramos um pouquinho desse cenário.

Abraços

Matheus tudo bem e vc?

vou dar uma olhada sim, mas então como faço o Spring injetar o managerna minha classe de teste??

solução!

O Spring já tem um módulo que dá para você fazer testes, acredito que seja visto em um dos cursos.

Ainda nao vi mais vou dar uma olhada obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software