2
respostas

Erro

Estou recebendo esse erro : Caused by: java.lang.IllegalStateException: Failed to replace DataSource with an embedded database for tests. If you want an embedded database please put a supported one on the classpath or tune the replace attribute of @AutoConfigureTestDatabase.

2 respostas

Oi Victor,

Chutaria que você está utilizando o MySQL ou outro banco de dados na API, mas os testes do repository precisam de um banco de dados em memória, como o H2, e ele não foi adicionado como dependência no pom.xml, causando o erro.

Ajudando... tive o mesmo problema e resolvi assim:

Se você estiver usando outra versão do SpringBoot, no meu caso estou usando a 2.5.7

O Import não irá iniciar os testes import org.junit.Test;

Então você deve usar import org.junit.jupiter.api.Test;

Para efetuar a pesquisa em outro banco diferente do H2 você deve colocar a anotação na classe conforme abaixo: @RunWith(SpringRunner.class) @DataJpaTest @AutoConfigureTestDatabase(replace = Replace.NONE) //Nova anotação public class CursoRepositoryTest {

Então a Classe toda ficara assim:

package br.com.mcp.repository;

import org.junit.Assert; import org.junit.jupiter.api.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.test.context.junit4.SpringRunner;

import br.com.mcp.modelo.Curso;

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

@Autowired
private CursoRepository cursoRepository;

@Test
public void deveriaBuscarNome() {

    String nomeCurso = "HTML 5";
    Curso curso = cursoRepository.findByNome(nomeCurso);
    Assert.assertNotNull(curso);
    Assert.assertEquals(nomeCurso, curso.getNome());
}

@Test
public void naoDeveriaBuscarNome() {

    String nomeCurso = "JPA";
    Curso curso = cursoRepository.findByNome(nomeCurso);
    Assert.assertNull(curso);

}

}

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