Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao executar teste com o banco de testes do H2

Olá ao tentar executar a aplicação com a classe de teste apontada para o banco de testes esta gerando um erro no teste, ele não esta subindo o profile de testes, esta enxergando o primeiro arquivo application.properties

segue abaixo o código da classe e do application.properties, não consegui achar o problema, ao executar o teste ele retorna 2 linhas do curso, 1 que esta no data.sql e a outra que esta sendo criada na classe.

package br.com.alura.forum.repository;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.Replace;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;

import br.com.alura.forum.modelo.Curso;

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
public class CursoRepositoryTest {

    @Autowired
    private CursoRepository repository;

    @Autowired
    private TestEntityManager em;


    @Test
    public void deveriaCaregarUmCursoAoBuscarPeloSeuNome() {
        String nomeCurso = "HTML 5";

        // criando o curso e persistindo no banco de dados.
        Curso html5 = new Curso();
        html5.setNome(nomeCurso);
        html5.setCategoria("Programacao");
        em.persist(html5);



        Curso curso =repository.findByNome(nomeCurso);

        Assert.assertNotNull(curso);
        Assert.assertEquals(nomeCurso,curso.getNome());
    }


    @Test
    public void NaodeveriaCaregarUmCursoCujoNomeNaoEstejaCadastrado(){
        String nomeCurso = "JPA";
        Curso curso =repository.findByNome(nomeCurso);

        Assert.assertNull(curso);

    }

}

application-test.properites

# criado para apontar a conexão para o banco de testes.
server.port = 8086

#datasource
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:alura-forum-test
spring.datasource.username=sa
spring.datasource.password=
# esta anotação faz com que o arquivo data.sql não seja inicializado, e o banco siga vazio
spring.datasource.initialization-mode = never 

#jpa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

1 resposta
solução!

o problema foi na criação do segundo arquivo application-test.properties estava com o enconding diferente de UTF-8 após realizar a correção fechei e abri o eclipse novamente e deu certo.

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