Skip to content
Mike Marciano edited this page Apr 23, 2024 · 23 revisions

image


MOCK

O Mock nada mais é do que fazer uma implementação fictícia de uma classe ou de uma interface, assim como o stub, podemos dizer que o mock é um stub com algumas vantagens

  1. Não é necessário implementar uma interface ou extender uma classe como o stub faz, o mock faz isso em tempo de execução
  2. Facilidade de definir um comportamento fictício dinâmico em uma classe
  3. Verificar comportamento da classe com mock

ANOTAÇOES

Anotação Descrição OBS
@Mock cria uma instancia de forma mockada, ela subistitui o Mockito.when sempre criar um comportamento para esse mock, caso contrario teremos um nullPointer
@InjectMocks cria uma nova instancia e Injeta as dependências que estão com @mock e cria uma classe concreta. cria uma nova instancia a cada teste
@Captur todos os testes
@Spy Analisa ocorrências de chamadas usando objetos reais todos os testes
@ExtendWith É utilizado para extender o mockito, com isso posso usar anotações extensão necessária para que as anotention funcione

CLASSES

Anotação Descrição USO. OBS
Mockito.mock() cria uma instancia de forma mockada create mock sempre criar um comportamento para esse mock, caso contrario teremos um nullPointer pois o mock instância o objeto com valores default
Mockito.any(.class) usado para passar parametros de forma dinamica parametro cria uma instancia do parametros que queremos passar
Mockito.verify verifica se aconteceu alguma ocorrencia response sempre criar um
Mockito.when cria uma resposta dinamica para o mock response cria uma resposta dinâmica para a dependência mockada, funciona em conjunto com o thenReturn
thenReturn cria uma resposta fixa para o mock response Funciona em conjunto com Mockito.when
thenAnswer cria uma resposta dinamica para o mock response Funciona em conjunto com Mockito.when
Mockito.atLeast vé usado junto com Mockito verify e analisa se occoreu pelo menos uma vez . sempre criar um
Mockito.never analisa se nunca ocorreu a chamada para determinado metodo . sempre criar um
Mockito.in analisa o ordem de execução das dependencias . sempre criar um
Mockito.mockStatic mock de um metodo estático . sempre criar um
Mockito.times é usado junto com Mockito verify e analisa se occoreu exatamento o numerot de vezes passado no parametro . sempre criar um

PRE-REQUISITO

<!-- Dependencias Mockito-->
<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-core</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
<!-- Dependencias Mockito para usar anotacoes-->
<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-junit-jupter</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
<!-- Dependencias AssertJS-->
<dependency>
  <groupId>org.assertj</groupId>
  <artifactId>assertj-core</artifactId>
  <version>3.23.1</version>
  <scope>test</scope>
</dependency>
<!-- Dependencia Junit-->
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.8.1</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-engine</artifactId>
  <version>5.8.1</version>
  <scope>test</scope>
</dependency>
<!-- Dependencia Junit Para Adicionar os Parametros-->
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-params</artifactId>
  <version>5.10.1</version>
  <scope>test</scope>
</dependency>

Note

Quando usamos a tag <scope>test</scope> estamos dizendo para o maven que somente execute em ambiente de teste.


Clone this wiki locally