7
respostas

Erro na classe ForumApplicationTests

A minha classe ForumApplicationTests esta com erro.

The import org.junit.runner cannot be resolved ( na linha 4)

RunWith cannot be resolved to a type (na linha 8)

package br.com.alura.forum;

import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class) @SpringBootTest public class ForumApplicationTests {

@Test
public void contextLoads() {
}

}

Obrigada

7 respostas

Oi Ines,

Qual a versão do Spring Boot que você está utilizando no projeto?

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

Pela mensagem de erro ele não encontrou as classes do JUnit.

Verifica no pom.xml se tem a dependência de testes do Spring Boot:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

E verifica se sua classe de teste está no src/test/java.

Sim esta tudo certo. Como eu mando figura para voces ?

Oi Ines,

Pode ter sido erro do Maven ao baixar as dependências do projeto.

Clica com o botão direito no projeto e vá em: Maven -> Update Project... para ver se resolve.

O pessoal geralmente manda imagem fazendo upload no site https://imgur.com e postando o link aqui

Falatava adicionar a junit4 nos import.

import org.springframework.test.context.junit4.SpringRunner;

Estava com o mesmo problema por aqui, inicialmente o import do org.junit.Assert não estava sendo resolvido. Vi que na classe teste de exemplo (do Spring Boot 2.4.4) o @Test utiliza o import org.junit.jupiter.api.Test do Junit 5, e não há a anotação @RunWith. Inicialmente, adaptei o código para utilizar somente classes do Junit 5:

package teste.projeto.forum;

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

@SpringBootTest
class ForumApplicationTests {

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

}

Porém queria testar conforme o que foi mostrado na aula: Adicionei o Junit 4 no Build Path, mas acabei também ajustando o Import da anotação @Test para org.junit.Test e o código conforme a aula deixou de ter erros, porém ao executar ele não inicializava mais o Spring, simplesmente o console mostra sem nenhum output, sem fazer nada, e sem nenhum retorno na aba do Junit. Voltando somente o import do @Test para org.junit.jupiter.api.Test o código voltou a executar corretamente o Spring Boot. Há algum problema, ou seria uma má prática utilizar parte das classes do Junit 4 e parte Junit 5?