Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Vantagem de não utilizar @ExtendWith(SpringExtension.class) ?

Boa tarde,

Estou revisando alguns conceitos e decidi ver o curso "Boas práticas de programação: Automatizando teste Java" e vi que se mostra como utilizar @Spy, @Mock etc. Porém me surgiu uma dúvida, qual a vantagem de utilizar separadamente essas anotações sendo que a anotação @ExtendWith(SpringExtension.class) já se integra com Junit5 e Mock de Mockito?

4 respostas

Olá, Lauro! Tudo bem?

A anotação @ExtendWith(SpringExtension.class) é realmente poderosa e facilita muito a integração do Spring com o JUnit 5, mas ela não substitui completamente as anotações @Spy e @Mock. O @ExtendWith(SpringExtension.class) é usada para dizer ao JUnit 5 que queremos rodar nossos testes no contexto do Spring. Isso significa que ela vai carregar o contexto do Spring e permitir que você injete beans diretamente em seus testes.

No entanto, as anotações @Spy e @Mock têm propósitos um pouco diferentes. Elas são usadas para criar e injetar mocks ou espiões em nossos testes. Isso é útil quando queremos isolar a unidade de código que estamos testando, simulando o comportamento de suas dependências.

Por exemplo, se você tem um serviço que depende de um repositório, você pode usar @Mock para criar um mock do repositório e então definir seu comportamento para os propósitos do teste. Isso permite que você teste o serviço de forma isolada, sem precisar de uma instância real do repositório ou de um banco de dados.

Então, em resumo, enquanto @ExtendWith(SpringExtension.class) é ótimo para integrar o Spring com o JUnit 5, as anotações @Spy e @Mock são importantes para criar e injetar mocks e espiões em seus testes, permitindo que você teste suas unidades de código de forma isolada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá Armando,

Podemos dizer que o @ExtendWith(SpringExtension.class) seria para testes de integração?

solução!

Boa tarde, Lauro!

Sim, é comum utilizar @ExtendWith(SpringExtension.class) em testes de integração quando se está usando o framework Spring para desenvolvimento de aplicações Java.

Já que ela é especialmente útil para testes de integração, onde testamos componentes da aplicação em conjunto, incluindo a interação com o contexto do Spring, como beans, injeção de dependência, etc. Portanto, é uma prática comum ver essa anotação em testes de integração de aplicações Spring.

Olá Armano,

Entendi. Obrigado por esclarecer minhda dúvida.