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

Meu método de teste deveriaCadastrarUmLeilao na classe LeilaoDaoTest não funciona

Meu método na classe LeilaoDaoTest não funciona, mesmo criando todas as classes conforma a aula

Segue meu método

o .comUsuario(new UsuarioBuilder() não está aceitando, quando coloco o mouse em cima diz que The method comUsuario(Usuario) is undefined for the type Object e pede para add cast

Segue o código todo no meu github https://github.com/carolaraujo/testes-sql-dao-java

@Test
    public void deveriaCadastrarUmLeilao() {
        Usuario usuario = criarUsuario();
        Leilao leilao = new LeilaoBuilder()
                .comNome("Mochila")
                .comValorInicial("500")
                .comUsuario(new UsuarioBuilder()
                        .comNome("fulano")
                        .comEmail("fulano@email.com")
                        .comSenha("123")
                        .criar())
                .criar();

        leilao = dao.salvar(leilao);

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

        Assert.assertNotNull(salvo);
    }
3 respostas

Atualizando os erros

Terminei o curso, porém minhas classes UsuarioDaoTest e LeilaoDaoTest estão com erros

Para ver todo o projeto segue meu github https://github.com/carolaraujo/testes-sql-dao-java

UsuarioDaoTest

package br.com.alura.leilao.dao;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;

import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import br.com.alura.leilao.model.Usuario;
import br.com.alura.leilao.util.JPAUtil;
import br.com.alura.leilao.util.builder.UsuarioBuilder;

class UsuarioDaoTest {

    private UsuarioDao dao;
    private EntityManager em;

    @BeforeEach
    public void beforeEach() {
        this.em = JPAUtil.getEntityManager();
        this.dao = new UsuarioDao(em);
        em.getTransaction().begin();
    }

    @AfterEach
    public void afterEach() {
        em.getTransaction().rollback();
    }

    @Test
    void deveriaEncontrarUsuarioCadastrado() {

        Usuario usuario = new UsuarioBuilder()
                .comNome("fulano")
                .comEmail("fulano@email.com")
                .comSenha("123")
                .criar();

        em.persist(usuario);

        Usuario encontrado = this.dao.buscarPorUsername(usuario.getNome());
        Assert.assertNotNull(encontrado);
    }

    @Test
    void naoDeveriaEncontrarUsuarioCadastrado() {
        new UsuarioBuilder()
        .comNome("fulano")
        .comEmail("fulano@email.com")
        .comSenha("123")
        .criar();

        em.persist(usuario);

        Assert.assertThrows(NoResultException.class, () -> this.dao.buscarPorUsername("beltrano"));

    }

    @Test
    public void deveriaRemoverUmUsuario() {
        Usuario usuario = new UsuarioBuilder()
                .comNome("fulano")
                .comEmail("fulano@email.com")
                .comSenha("123")
                .criar();

        em.persist(usuario);

        dao.deletar(usuario);
        Assert.assertThrows(NoResultException.class, () -> this.dao.buscarPorUsername(usuario.getNome()));
    }



}

LeilaoDaoTest

package br.com.alura.leilao.dao;

import java.math.BigDecimal;
import java.time.LocalDate;

import javax.persistence.EntityManager;
import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import br.com.alura.leilao.model.Leilao;
import br.com.alura.leilao.model.Usuario;
import br.com.alura.leilao.util.JPAUtil;
import br.com.alura.leilao.util.builder.LeilaoBuilder;
import br.com.alura.leilao.util.builder.UsuarioBuilder;

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
    public void deveriaCadastrarUmLeilao() {
        Usuario usuario = new UsuarioBuilder()
                .comNome("fulano")
                .comEmail("fulano@email.com")
                .comSenha("123")
                .criar();
        em.persist(usuario);
        Leilao leilao = new LeilaoBuilder()
                .comNome("Mochila")
                .comValorInicial("500")
                .comData(LocalDate.now())
                .comUsuario(usuario)
                .criar();

        leilao = dao.salvar(leilao);

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

        Assert.assertNotNull(salvo);
    }

    @Test
    public void deveriaAtualizarUmLeilao() {
            Usuario usuario = new UsuarioBuilder()
                    .comNome("fulano")
                    .comEmail("fulano@email.com")
                    .comSenha("123")
                    .criar();
            em.persist(usuario);
            Leilao leilao = new LeilaoBuilder()
                    .comNome("Mochila")
                    .comValorInicial("500")
                    .comData(LocalDate.now())
                    .comUsuario(usuario)
                    .criar();


        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());
    }

}
solução!

Oi Caroline,

O problema é que na sua classe LeilaoBuilder os métodos estão com retorno Object ao invés de LeilaoBuilder:

public Object comUsuario(Usuario usuario) {
    this.usuario = usuario;
    return this;
}

Altere o retorno dos métodos:

public LeilaoBuilder comUsuario(Usuario usuario) {
    this.usuario = usuario;
    return this;
}

Era isso mesmo, muito obrigada !

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