Que bom que existem canais como o seu. Parabéns pela dedicação e compartilhamento de conteúdo. Eu vi seu curso de microserviços, mas achei avançado, você tem cursos mais básicos, de como usar só Spring?
Olá, árabéns pelo vídeo. Se me permite alguns comentários: esse teste não precisa do spring porque não utiliza nenhum recurso do framework. Um teste unitário mockando a dependência (usando algo como o mockito mesmo) seria o suficiente (inclusive é a abordagem sugerida pelo spring, então ouso dizer que esse teste não deveria usar o spring). Testes de integração, que precisam subir o contexto do spring, tem outro propósito, e é pra esses casos que o @MockBean deveria ser usado. Por exemplo, digamos que voce esteja fazendo um teste de integração do controller e precise mockar o comportamento (digamos, algum bean que o controller utiliza); você não conseguiria fazer isso na classe de teste porque você não tem o controle da injeção. Não é o caso desse exemplo em que um teste de unidade simples seria o suficiente. Outro detalhe é que voce utiliza anotações do junit4 mas usa a classe Assertions, que é do junit5. Isso funciona apenas pelo fato de que quando o assert quebra, ele lança uma exceção, mas essa classe não deveria ser misturada com anotações do junit4 (e vice versa)
Michelli, seus vídeos sempre têm sido a resposta para um grande questionamento meu em algum momento da minha vida como estudante de Spring, você tem uma didática única com sua leveza particular, parabéns pelo trabalho e tenha certeza que você ajudou muitas pessoas de uma forma muito simples e direta.
Caaara. Você não tem noção de como me ajudou !!! Estava a dois dias preso em um teste na classe Service e não estava conseguindo achar uma solução de jeito nenhum. Resolvi aplicando o Mockito... Obrigado pela ajuda. Ganhou mais um humilde seguidor. kkkkkk
Interessante a criação desse BookingServiceTestConfiguration. Eu teria criado uma classe TestConfig, e criado todos os beans lá. Mas achei interessante.
Alguem conhece alguma ferramenta execute testes em java automaticamente a cada arquivo salvo no projeto? Na stack do Node tem o 'jest --watch ' que faz isso. Mas no Java nunca vi. Esse recurso é ótimo pro tdd
Oi Michelli, tudo bem? Primeiramente, muito obrigado por estar compartilhando esse conteúdo conosco. Seu canal está sendo de muita ajuda para mim, que estou no início da carreira. Uma dúvida, por quê você teve que criar um @Bean de BookingService aos 13:05? Na empresa onde trabalho esse bean não se fez necessário nos testes e como sou iniciante gostaria de entender melhor, hehe.
No code que eu fiz, precisei deixar disponível um bean para teste de BookingService, mas dependendo da logica no seu sistema, tem outras maneiras mesmo de fazer =)
Talvez nos testes que vc tem visto no seu trabalho, a classe em si esteja carregando o contexto do spring e por isso já cria as instâncias a serem injetas, mas dependendo do contexto isso não é o ideal pois, você terá testes mais lentos. Outra hipótese é que vc já tenha uma classe de configuração própria para o testes desacoplada da classe do teste em si, e ela esteja fazendo essa instanciação dos beans.
amigo, acho que nao está disponivel nessa versao nao. Mas, se vc for estudante, professor ou estiver desenvolvendo um projeto Open Source, a J-Brains fornece uma licença ao produto na versao pro de graça. Da uma conferida..eu uso a licença de estudante ;) PS: Eles pedem comprovaçoes..entao n adianta tentar driblar kkkk!
Se vc não tiver condições de pagar um Intellij Ultimate, vc pode usa-lo por 30 dias, depois dar um reset. Eu faço no macOS há anos e é facinho, em outros OS tb deve ser fácil.
Se possível peço que disponibilize o código no github> Não entendi muito bem o motivo pelo qual você teve que criar aquela classe de configuração (bean) na classe de teste.
Oi Michelli, Parabéns pelo video, Apenas uma opinião que eu acho que poderia melhorar no seu video, quando no minuto 22:59 você adiciona a anotação MockBeans sem dar uma explicação porque fez isso, acho que a ideia foi que já se subtende o porque de colocar essa anotação, porém cada passo do desenvolvimento poderia ser explicado principalmente quando falamos de abstrações como é o caso das anotações, como espectador senti a falta dessa explicação no video ficando um geap nesse ponto, de resto eu gostei bastante da explicação e novamente parabéns!!
Michelli, como que utiliza a notação @Before? Essa notação está desatualizada. Para o teste eu fiz a chamada do setup() dentro do método que faz o teste < bookingTestServiceDaysCalculator() >. No mais, o teste deu certo, e consegui entender o que foi proposto. Só essa notação que não consegui executar mesmo. Obrigado!
Acho que seja possível.configurar, mas os testes são rodados na compilação para garantir que não tenha quebra, porém somente é colocado pacote o que faz sentido pro compilador
@@arozendojr Para gerar o war ou ear, você provavelmente vai usar algo como o maven ou gradle. Estas ferramentas possuem vários mecanismos para manipular o war e ear para serem gerados como você quiser. Mas, da forma padrão, estas ferramentas não vão incluir as suas classes de testes. Como o Wagner falou, as classes de testes são usadas apenas durante a fase de testes. Em geral essas ferramentas separam a execução em várias etapas, entre elas: compilação do projeto, compilação e execução dos testes automatizados e, por vim, geração do pacote war/ear.
@@kaosmentalgeral, onde trabalho não tem a prática de TDD, mexer nos Scripts de deploy não vou poder mexer :-( Vou ter que voltar a ideia de criar um outro projeto, fazer referência do projeto/ incluíd no build path ou coisa do tipo para criar os testes
09:30 Fico me perguntando porque o pessoal roda um teste sabendo que ele com certeza irá falhar porque as interfaces e classes concretas ainda não existem. Ainda não consegui enxergar o real valor disso
o problema que em códigos como esse pequeno.. vc tem a certeza que não vai encontrar a rotina pronta, mas em códigos grandes, com vários métodos e rotinas e etc.. pode "acontecer" do método que vc esta querendo implementar criar já exista... por isso rodamos o código com falha.. para ter certeza que tal método ainda não existe no seu código fonte! Espero ter ajudado!
Porque essa abordagem é focada nos testes. Você só faz algo porque o teste falha... Isto evita que voce faça coisas a mais e adicione possíveis funcionalidades desnecessárias que gastam tempo e dinheiro, ou até bugs porque voce não foi com calma. Obviamente voce poderia criar as coisas antes, especialmente para coisas triviais, mas por motivos didáticos, é sempre bom ir caminhando devagar né?
Professora A) Pensa comigo uma coisa... Me ajuda a entender... B) Estou fazendo essa pergunta, para varios JAva Influencers do YT... C) E o seguinte: - Se mock's/Mockito permite a "manipulacao do resultado", ou seja, eu dou o resultado que eu quiser. Qual o valor de um TESTE, onde eu eu defino o "resultado que eu quero"???? (manipulacao do resultado) Por exemplo: O metodo retorna uma String..... No mock, eu determino que o resultado sera 22.22 (uma Double)... E o Mock "me da o resultado de 22.22". Para que serve um teste desses? Onde ao inves de ele me dar o resultado REAL(testes de integracao), ele me da um resulta "maquiado"(teste mockados)???
testes de integração são muito mais custosos de executar, logo pra isso server os testes unitários, testar pequenas partes do código pra verificar se determinada função está funcionando. No caso, o ideia seria fazer pelo menos 1 teste de integração, e vários casos de testes unitários, para cobrir possíveis falhas.
27 minutos, achei pouco, Tem de 1 hora em diante, falando sobre Spring? Gracias! Eu uso Android Studio como IDE, algum problema em não ser Intelij, nunca vejo tutorial com Android Studio?
@@WagnerOCosta Lê o POST de cima dessa mensagem, antes de dizer que o Android Studio é intelig de forma tão simplificada. Se não quer ajudar, não comenta nas minhas dúvidas deixadas para a professora.