2
respostas

"Nada acontece" quando eu rodo o teste do Junit

Quando eu rodo o teste, o console processa alguma coisa, mas logo finaliza em branco(aparece "terminated, etc" no topo do console).

Se puderem ajudar, agradeço!

2 respostas

Oi Diego,

Posta aqui como ficou a sua classe de teste.

Oi, Rodrigo. Complementando o problema do colega de cima, eu tive o mesmo caso. A confusão está pq foi usado o New JUnit test no penúltimo vídeo da aula 3 e, para ula 4, passou para New Junit 4 test. Só que para rodar o do penúltimo vídeo, com New JUnit Test, precisou fazer algumas alterações desde que o vídeo foi lançado (segundo código).

Quando copiamos as anotações do CursoRepository para o AutenticacaoControllerTest, acaba vindo essas atualizações também.

No caso, a minha AutenticacaoControllerTest ficou assim:

package br.com.alura.forum.controller;

import java.net.URI;

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 AutenticacaoControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @org.junit.jupiter.api.Test
    public void deveriaDevolver400SeOsDadosDeAutenticacaoEstejamIncorretos() throws Exception {
        URI uri = new URI("/auth");
        String json = "{\"email\":\"invalido@email\",\"senha\":\"123456\"}";

        mockMvc.perform(MockMvcRequestBuilders
                .post(uri)
                .content(json)
                .content(json)
                .contentType(MediaType.APPLICATION_JSON))
        .andExpect(MockMvcResultMatchers
                .status()
                .is(400));

    }

}

A anotação `@org.junit.jupiter.api.Test` ficou estranha, mas funcionou apenas dessa forma, pois quando importava @Test com JUnit 4, vinha o o @Test da notação antiga, com essa anotação com nome completo funcionou (além de outras correções do vídeo anterior).

Aliás, se alguém usando o 2.7.0 também tenha passado por problemas com as classes de testes anteriores, essa foi a solução encontrada.

package br.com.alura.forum.repository;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
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.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;

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

@ExtendWith(SpringExtension.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
class CursoRepositoryTest {
.
    @Autowired
    private CursoRepository repository;

    @Autowired
    private TestEntityManager em;

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

        Curso html5 = new Curso();
        html5.setNome(nomeCurso);
        html5.setCategoria("Programacao");
        em.persist(html5);

        Curso curso = repository.findByNome(nomeCurso);
        Assertions.assertNotNull(curso);
        Assertions.assertEquals(nomeCurso, curso.getNome());
    }

    @Test
    public void NaodeveriaCarregarUmCursoPeloNome() {
        String nomeCurso2 = "Wololo";
        Curso curso = repository.findByNome(nomeCurso2);
        Assertions.assertNull(curso);
        }


}

Veja que, ao invés de Assert, passamos a usar Assertions, além de outras mudanças.