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.