Testes unitários em Controllers com Spring MockMVC

  Рет қаралды 35,681

AlgaWorks

AlgaWorks

Күн бұрын

Nesse vídeo iremos te ensinar a fazer testes unitários em Controllers utilizando Spring.
Para isso, vamos usar as ferramentas Rest Assured e Spring Mock MVC juntamente com JUnit.
Testes unitários nessa camada se diferem um pouco dos convencionais.
Mas, fique tranquilo! Mostraremos todos os detalhes necessários para manter a total cobertura de testes no seu projeto.
Faça download do código-fonte desenvolvido na aula: github.com/alg...
Acompanhe a AlgaWorks nas redes sociais ↴
Telegram: t.me/awjava
Facebook: / algaworks
Instagram: / alga.works
LinkedIn: / algaworks
Twitter: / algaworks
KZbin: / algaworks
Conheça o nosso blog:
blog.algaworks...
Conheça os nossos cursos online de Java e Front-end:
www.algaworks.com

Пікірлер: 72
@sergiothiagoxtz
@sergiothiagoxtz 3 жыл бұрын
O diferencial da algaworks é essa riqueza de detalhes, você sai entendendo o por que de cada coisa. Muito bom.
@alfredomenezes8814
@alfredomenezes8814 2 жыл бұрын
Muito bom, depois de um dia inteiro tentando aprender a forma correta de fazer testes no Spring consegui com esse vídeo, valeu!
@aqueleestevao
@aqueleestevao 4 жыл бұрын
Parabéns 🎉 to curtindo bastante os vídeos de vocês 🤘🏻 also, ótima explicação da diferença entre teste unitário e de integração e da importância dos mocks
@algaworks
@algaworks 4 жыл бұрын
Valeu demais, Estevão! Fico feliz que os vídeos estejam agregando valor pra vocês!
@elieldomartins1037
@elieldomartins1037 Жыл бұрын
Achei muito didática essa aula !
@elisiocanuto7327
@elisiocanuto7327 2 жыл бұрын
Otima explicação muito obrigado !!
@marciomartins4111
@marciomartins4111 2 жыл бұрын
Obrigado pelo conteúdo!
@Airton8
@Airton8 2 жыл бұрын
Parabéns e obrigado!
@ChandlerBing11
@ChandlerBing11 4 жыл бұрын
Muito bom esse exemplo, Will! Parabéns pela didática e forma clara de expor os seus conhecimentos!
@algaworks
@algaworks 4 жыл бұрын
Poxa, muito obrigado mesmo. Ficamos felizes em saber que tenha gostado :)
@Laos22007
@Laos22007 3 жыл бұрын
Excelente explicação, de fácil entendimento. Muito bom para quem está começando no mundo de API como eu estou. Obrigado!
@13mvincius
@13mvincius 2 жыл бұрын
Excelente explicação!
@danilokodavara9085
@danilokodavara9085 4 жыл бұрын
Parabéns William, ótimo conteúdo. Explicação top; Comecei a fazer o curso Começando com Web Services RESTful e Spring, vou tentar acrescentar testes unitarios nos Controllers do curso . Muito Obrigado .
@algaworks
@algaworks 4 жыл бұрын
Poxa, que massa Danilo! Pode ter certeza que vai agregar muito valor ao seu projeto!
@andersonrocha1979
@andersonrocha1979 3 жыл бұрын
top demais... obrigado por compartilhar.
@AndersonLopesabl
@AndersonLopesabl 4 жыл бұрын
Parabéns Willian pelo conteúdo e pela excelente explicação.
@algaworks
@algaworks 4 жыл бұрын
Opa, muito obrigado Anderson!
@kynio08
@kynio08 2 жыл бұрын
Excelente Didática, muito bem expllicado. Gostaria de mais aulas sobre o uso do DDD nos testes Unitários
@JeffersonLuizCruz
@JeffersonLuizCruz 4 жыл бұрын
Ficou show a explicação
@RafaelBizi
@RafaelBizi 4 жыл бұрын
Aula fantástica! Só tenho a agradecer!
@feehhs2
@feehhs2 3 жыл бұрын
Ótima aula!
@marcosradix1
@marcosradix1 3 жыл бұрын
Topa cara, muito bem explicado!!
@luizc.jr.2064
@luizc.jr.2064 4 жыл бұрын
Sensacional.... valeu!!
@algaworks
@algaworks 4 жыл бұрын
Poxa, valeu mesmo Luiz!
@emanuelpaivamedeiros7424
@emanuelpaivamedeiros7424 4 жыл бұрын
Quem quiser a versão "virgem" do projeto pra codar junto ao William, só clonar o repo: github.com/Nel-Medeiros/algaworks-videoaula-spring-mockController-start
@erivelton84ribeiro
@erivelton84ribeiro Жыл бұрын
Ótima aula. Mas minha dúvida é em como efetuar um teste com um objeto completo. Pode parecer bobo, mas é uma dpuvida que eu tenho.
@algaworks
@algaworks Жыл бұрын
Olá Erivelton, poderia ser mais específico? O que seria esses objetos completos?
@paulooliveira5724
@paulooliveira5724 3 жыл бұрын
Explicação excelente! A algaworks tem algum curso que aborda testes unitários com Spring? Pesquisei e não encontrei. Tenho bastante interesse nesse tema. Bem que o William poderia ser o instrutor desse curso se não tiver!
@carloscazelattojr
@carloscazelattojr Жыл бұрын
Vc tem algum exemplo de teste onde valida/confere paginação(pageable) ?
@adrianomelos
@adrianomelos 4 жыл бұрын
Cara muito bom o seu vídeo, entende muito do assunto mas em um dos meus teste deu o seguinte erro faz ideia do que pode ser? java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
@matheusedisonbarkert1456
@matheusedisonbarkert1456 4 жыл бұрын
Parabens, demorei pra encontrar algo que me ajudasse a testar o controller. Poderia fazer um video sobre como testar com o POST?
@algaworks
@algaworks 4 жыл бұрын
Olá Matheus! Poxa, muito obrigado! Pode deixar que já anotei sua sugestão aqui para os próximos vídeos! :D
@Chryst1anFRz
@Chryst1anFRz 4 жыл бұрын
Descobriu como?
@matheusbarkert6734
@matheusbarkert6734 4 жыл бұрын
​@@Chryst1anFRz Opa, descobri sim! Vou compartilhar com você o link dos testes de um projeto meu dai você da uma olhada. github.com/Matheus-Barkert/Desafio-Pautas/tree/master/src/test/java/br/com/compasso/DesafioPauta/controller
@Chryst1anFRz
@Chryst1anFRz 4 жыл бұрын
@@matheusbarkert6734 Muito obrigado!
@Chalbano
@Chalbano 3 жыл бұрын
Eu só faço teste unitário em Controllers! Assim consigo testar o cenário completo de ponta a ponta!
@asilvadesa
@asilvadesa 3 жыл бұрын
Faltou mostrar o import do Spring Mock MVC nas dependencias do Maven, e outro ponto que peguei um projeto que estou fazendo e tinha mais de um controller e mesmo usando o standaloneSetup na hora de compilar ele pedia as dependencias de outro controller. Para quem tiver esse basta add o classe do controller que vc quer isolar. No meu caso ficou assim. @WebMvcTest(CozinhaController.class) public class CozinhaControllerTest Qualquer duvida github.com/asilvadesa/algafood/blob/main/src/test/java/com/algaworks/algafood/api/controller/CozinhaControllerTest.java
@LuizHenrique-dr2df
@LuizHenrique-dr2df 2 жыл бұрын
Valeu irmão, o meu tava dando o mesmo problema
@buriti22
@buriti22 4 жыл бұрын
Grande Willian... como eu faço quando tenho Autenticação com JWT?
@wscatao
@wscatao 2 жыл бұрын
Aula muito boa, muito bem explicado e direto ao ponto, sugestão, diminuir um pouco o volume da voz na gravação, da pra ouvir tu engolindo saliva e isso não é legal.
@giltonnascimento2758
@giltonnascimento2758 4 жыл бұрын
Achei interessante, como faço para aprender mais?!
@williamfranklin6924
@williamfranklin6924 3 жыл бұрын
show
@jogatinandodevs
@jogatinandodevs 4 жыл бұрын
Tenho problemas com testes unitarios quando se trata de fazer login usando MockMVC ou JUnit mesmo para logar em um redis (sem possuir redis local). Não tenho como usar o Redis localmente, mas preciso conseguir testar os metodos de login e os metodos q necessitam de authenticação (Bearer) para saber q tudo esta funcionando corretamente. Usamos MongoDB, JUnit 4 e MockMVC para tentar fazer os testes. Pode me auxiliar?
@rafaelcardoso8831
@rafaelcardoso8831 4 жыл бұрын
Muito bom !!! Quando preciso mockar um repositorio, segue a mesma linha , de como foi mockada a service ???
@algaworks
@algaworks 4 жыл бұрын
Olá Rafael! Exatamente o mesmo processo, na verdade para qualquer componente, nós que indicamos o comportamento do método quando receber determinados parâmetros.
@rodrigo6956
@rodrigo6956 3 жыл бұрын
@@algaworks Nesse caso mesmo assim, para eu conseguir subir o projeto para testes o servidor do banco precisa estar ligado né? Fui fazer com ele desligado e deu um erro quando foi subir o projeto.
@flaviorodrigues5174
@flaviorodrigues5174 3 жыл бұрын
Excelente Will. Parabéns! Se puder dá uma dica. Quando vou rodar o teste, encontro um problema com o construtor na classe filme: Quando vou debugar acho: java: constructor Filme in class br.com.algaworks.filmes.model.Filme cannot be applied to given types; required: no arguments found: java.lang.Long,java.lang.String,java.lang.String reason: actual and formal argument lists differ in length. Diz que o problema está na linha 15 onde tem a chaves fechando a classe. LIsta de argumentos diferem em tamanho?
@CiryanGG
@CiryanGG 2 жыл бұрын
um ano após, achou essa resposta? to com esse problema.
@vitorsantosdasilva6538
@vitorsantosdasilva6538 4 жыл бұрын
Muito bom! Apesar de meu arquivo pom.xml já está com o lombok adicionado. Infelizmente o lombok aqui não gerou nenhum método. Teria algum procedimento prévio a ser realizado?
@algaworks
@algaworks 4 жыл бұрын
Opa, valeu mesmo Vitor! Você chegou a fazer a instalação do plugin do Lombok na sua IDE?
@vitorsantosdasilva6538
@vitorsantosdasilva6538 4 жыл бұрын
@@algaworks Hummm, não fiz a instalação do plugin, achei q fosse baixar automaticamente via maven.
@algaworks
@algaworks 4 жыл бұрын
@@vitorsantosdasilva6538 Ah, realmente é necessário instalar também o plugin, a dependência do Maven vai adicionar a funcionalidade à sua aplicação. Mas para a IDE reconhecer esses códigos gerados durante o build é necessário o plugin. Você pode baixar o plugin direto do site oficial, é bem simples de instalar: projectlombok.org/download
@JulianLuis89
@JulianLuis89 3 жыл бұрын
Qual a diferença do restassuredMockMvc pro mockMvc?
@Chryst1anFRz
@Chryst1anFRz 4 жыл бұрын
Onde acho material sobre como fazer Post?
@eudesbatista6461
@eudesbatista6461 4 жыл бұрын
Não entendi por que os nomes dos metodos foram separados por underline se no Java o padrão é CamelCase e por que a importação de todos ? Isso não carrega informação desnecessária?
@professordaniloalmeida
@professordaniloalmeida 4 жыл бұрын
No caso de teste foge um pouco a nomeação de métodos, não há problemas usar outro padrão já que este método não é usado fora da própria classe e sim só para a escrita do teste. Com relação a importação vai carregar todos os métodos statics, mas como se usa muita coisa nos testes não é tão problema assim. A legibilidade do teste fica acima do desempenho, principalmente porque o teste só roda na compilação.
@algaworks
@algaworks 4 жыл бұрын
@@professordaniloalmeida muito boa explicação, é exatamente isso. O custo de se fazer esse import não é tão caro. E como foi muito bem colocado por você, os testes unitários só rodam na sua própria fase, o que não impacta no projeto como um todo.
@a.g.4607
@a.g.4607 4 жыл бұрын
That's strange... my environment doesn't found that class: Rest AssuredMockMvc. i have tried to import it... idk how I can import io.restassured.module.mockmvc.RestAssuredMockMvc; gradle
@philippesousa1151
@philippesousa1151 4 жыл бұрын
you must import on your gradle file // mvnrepository.com/artifact/io.rest-assured/rest-assured testCompile group: 'io.rest-assured', name: 'rest-assured', version: '4.3.1'
@Alex-bp6jy
@Alex-bp6jy 2 жыл бұрын
17:00
@felipemacedocomputacao
@felipemacedocomputacao 3 жыл бұрын
o quanto um programador java junior deve saber testes para entrar no mercado?
@ludwigwantwi7484
@ludwigwantwi7484 3 жыл бұрын
só mais o unitário, pois geralmente tem uma área só pra profissionais de testes
@antoniocarloszxc
@antoniocarloszxc 10 ай бұрын
Se a controller tiver autenticação, como faço para resolver?
@algaworks
@algaworks 10 ай бұрын
Insira o pacote de testes do Spring Security no projeto. Com ele, vem as annotations @WithUserDetails, @WithUser que injetam um usuário autenticado nos testes. Temos uma aula sobre isso no nosso canal.
@algaworks
@algaworks 10 ай бұрын
@algaworks kzbin.info/www/bejne/fZXRZJ2AgbaDatU
@giltonnascimento2758
@giltonnascimento2758 4 жыл бұрын
Por qual motivo ao lançar uma exceção fico obtendo 500 ao invés de 404 ao buscar por um item não existem? Alguma ideia?
@janssenolimpio7984
@janssenolimpio7984 3 жыл бұрын
Os códigos de status 500-599 representam erro no servidor. Tenta no bloco catch lançar um Response Body com o status code desejado.
@micheleckhardt6067
@micheleckhardt6067 4 жыл бұрын
Faltou o teste passando o body de um post
@relaxed.stories
@relaxed.stories 4 жыл бұрын
english me bana de bhai :)
@iaskarapimentel5955
@iaskarapimentel5955 2 жыл бұрын
Excelente material!!! Eu estou encarando um erro, gostaria de saber se alguém teve algo parecido. "java.lang.IllegalStateException: delegate cannot be null. Ensure a Bean with the name springSecurityFilterChain implementing Filter is present or inject the Filter to be used."
@algaworks
@algaworks 2 жыл бұрын
Fala mergulhadora! Você provavelmente tem o Spring Security configurado no projeto, sendo assim, o mais fácil é realizar um teste com todos os componentes do Spring carregados. Para isso, utiliza a Annotation @SpringBootTest ao invés de @WebMvcTest.
Consumindo REST API com Spring WebClient
56:00
AlgaWorks
Рет қаралды 35 М.
Utilizando múltiplos bancos de dados com Spring Boot
51:39
AlgaWorks
Рет қаралды 16 М.
Running With Bigger And Bigger Lunchlys
00:18
MrBeast
Рет қаралды 132 МЛН
🕊️Valera🕊️
00:34
DO$HIK
Рет қаралды 1,6 МЛН
إخفاء الطعام سرًا تحت الطاولة للتناول لاحقًا 😏🍽️
00:28
حرف إبداعية للمنزل في 5 دقائق
Рет қаралды 61 МЛН
Spring Boot Testing - ** Batteries Included 🔋🔋
41:12
Dan Vega
Рет қаралды 22 М.
TDD na prática com Java usando @MockBean
27:39
Michelli Brito
Рет қаралды 47 М.
Spring Boot Unit Testing With Mockito - Controllers
9:08
Teddy Smith
Рет қаралды 40 М.
Spring Boot Testcontainers - Integration Testing made easy!
33:31
COMEÇANDO com TESTES UNITÁRIOS no JAVA SPRING | Junit + Mockito
52:32
Fernanda Kipper | Dev
Рет қаралды 40 М.
Testes unitários com jUnit e Mockito
25:11
Matheus do Java
Рет қаралды 2,7 М.
Utilizando MongoDB com Spring Data
42:32
AlgaWorks
Рет қаралды 19 М.
Aulão: Introdução aos testes automatizados com Spring Boot
32:01
Giuliana Bezerra
Рет қаралды 9 М.
Running With Bigger And Bigger Lunchlys
00:18
MrBeast
Рет қаралды 132 МЛН