5
respostas

Falha ao gerar o Build, erro no Junit

Ao gerar o build, seja no Eclipse seja na console de comando, aparece um erro idêntico:


[INFO] Compiling 3 source files to D:\Documentos\Profissionais\Cursos\Spring framework\eclipse-workspace\forum\target\test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/ForumApplicationTest.java:[5,17] cannot find symbol
  symbol:   class Assert
  location: package org.junit
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/ForumApplicationTest.java:[7,24] package org.junit.runner does not exist
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/ForumApplicationTest.java:[11,2] cannot find symbol
  symbol: class RunWith
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/controller/LoginControllerTest.java:[6,24] package org.junit.runner does not exist
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/controller/LoginControllerTest.java:[17,2] cannot find symbol
  symbol: class RunWith
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[4,17] cannot find symbol
  symbol:   class Assert
  location: package org.junit
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[6,24] package org.junit.runner does not exist
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[16,2] cannot find symbol
  symbol: class RunWith
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/ForumApplicationTest.java:[17,17] cannot find symbol
  symbol:   variable Assert
  location: class br.com.semasantos.forum.ForumApplicationTest
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[30,17] cannot find symbol
  symbol:   variable Assert
  location: class br.com.semasantos.forum.repository.CursoRepositoryTest
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[31,17] cannot find symbol
  symbol:   variable Assert
  location: class br.com.semasantos.forum.repository.CursoRepositoryTest
[ERROR] /D:/Documentos/Profissionais/Cursos/Spring framework/eclipse-workspace/forum/src/test/java/br/com/semasantos/forum/repository/CursoRepositoryTest.java:[38,17] cannot find symbol
  symbol:   variable Assert
  location: class br.com.semasantos.forum.repository.CursoRepositoryTest

Fora do build tudo está perfeito: compila se reclamar de dependências nem de símbolos não encontrados, roda com perfeição, passa por todos os testes. Já até procurei no Maven um pacote org.junit.runner pra tentar incluir, mas não achei. Para resolver um problema anterior, estou importando org.junit.jupiter.api.Test em vez de org.junit.Test, não sei se tem a ver, mas o anterior não funcionava com minha versão 2.5.6. do Spring Boot. O problema seria nesta versão?

5 respostas

Oi Sérgio,

As novas versões do Spring, posteriores a versão utilizada no curso, utilizam o JUnit 5(cujas classes devem ser importadas do pacote org.junit.jupiter.api) ao invés do JUnit 4(antigo pacote org.junit).

Bons estudos!

Entendi, Rodrigo. Mas, neste caso, quais seriam o imports a serem feitos nas classes LoginControllerTest e CursoRepositoryTest a seguir, para corrigir os atuais que não funcionam?

import java.net.URI;

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
public class LoginControllerTest {

E

iimport 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.orm.jpa.DataJpaTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;


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

Continuo sem conseguir prosseguir no projeto, não consigo gerar o build para prosseguir. Se alguém puder me ajudar, ficaria imensamente grato.

Oi Sérgio,

Precisa substituir a anotação @RunWith por: @ExtendWith(SpringExtension.class)

Valeu, Rodrigo. Sua solução resolveu o problema do @RunWith do pacote org.junit. No entanto, permaneceu o problema com o @Assert na hora do build. Fui então em busca de uma solução no mesmo rumo da sua solução, procurei e acabei achando a anotação @Assertions (em vez de @Assert) no pacote org.junit.jupiter.api que vc já havia sugerido. E deu certo. Veja o exemplo abaixo.

package br.com.semasantos.forum;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;


@ExtendWith(SpringExtension.class)
@SpringBootTest
public class ForumApplicationTest {

    @Test
    public void testeFake() {
        Assertions.assertTrue(true);
    }

}