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

Erro no arquivo LeilaoDaoTest.java

Segui o passo a passo do exemplo da aula 3 "Testando o INSERT e UPDATE" mas está dando o seguinte erro: "The constructor LeilaoDao(EntityManager) is undefined".

OBS: Tentei criar um construtor na classe LeilaoDao.java que aparentemente resolve o problema, mas aí quando executo dá outro erro: java.lang.NullPointerException

Segue abaixo o código para análise e caso alguém saiba o que está ocasionando o erro por favor me avise. Se o instrutor puder verificar também agradeço.

class LeilaoDaoTest {

    private LeilaoDao dao;
    private EntityManager em;

    @BeforeEach
    public void beforeEach() {

        this.em = JPAUtil.getEntityManager();
        this.dao = new LeilaoDao(em);        
        em.getTransaction().begin();

    }

    @AfterEach
    public void afterEach() {

        em.getTransaction().rollback();

    }

    @Test
    void deveriaCadastrarLeilao() {

        Usuario usuario = criarUsuario();
        Leilao leilao = new Leilao("Mochila", new BigDecimal("70"), LocalDate.now(), usuario);
        leilao = dao.salvar(leilao);

        Leilao salvo = dao.buscarPorId(leilao.getId());
        Assert.assertNotNull(salvo);

    }

    @Test
    void deveriaAtualizarLeilao() {

        Usuario usuario = criarUsuario();
        Leilao leilao = new Leilao("Mochila", new BigDecimal("70"), LocalDate.now(), usuario);
        leilao = dao.salvar(leilao);

        leilao.setNome("Celular");
        leilao.setValorInicial(new BigDecimal("400"));
        leilao = dao.salvar(leilao);

        Leilao salvo = dao.buscarPorId(leilao.getId());
        Assert.assertEquals("Celular", salvo.getNome());
        Assert.assertEquals(new BigDecimal("400"), salvo.getValorInicial());

    }

    private Usuario criarUsuario() {

        // instancia o usuario
        Usuario usuario = new Usuario("fulano", "fulano@email.com", "12345678");
        em.persist(usuario);        
        return usuario;

    }

}
2 respostas
solução!

Pessoal, achei a solução... comparando os arquivos, percebi que a classe LeilaoDao.java que podemos baixar do projeto da aula está com alguma diferenças no construtor e numa notação da variável em do tipo EntityManager, segue o que precisa mudar:

    private EntityManager em;

    @Autowired
    public LeilaoDao(EntityManager em) {
        this.em = em;
    }

Só fazer essa alteração que o teste passa redondo... xD

Oi Anderson

Perfeito. Obrigado por compartilhar a solução.