Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — FCC 2024

Engenharia de SoftwareGeral
Código
fc147287
Banca
FCC
Órgão
BAHIAGÁS
Ano
2024
Cargo
APO ( )

Com relação aos testes de software, são elementos corretos do Mockito:

  1. A @Mock, @InjectMocks, @Spy, @Test e AftertEach.
  2. Bwhen( ), thenReturn( ), verify( ), @BeforeAll e @AfterAll.
  3. C@Test, @BeforeEach, @AfterEach, @BeforeAll, e @AfterAll.
  4. D@Test, @BeforeEach, @AfterEach, @Mock, @InjectMocks e @Spy.
  5. Ewhen( ), thenReturn( ), verify( ), @Mock, @InjectMocks e @Spy.
Revelar gabarito e comentário

GabaritoE — when( ), thenReturn( ), verify( ), @Mock, @InjectMocks e @Spy.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Teste de Software: Mockito

Gabarito: letra E. O Mockito é um framework de mocking para testes unitários em Java, e seus elementos centrais são as anotações @Mock, @InjectMocks e @Spy, além dos métodos when(), thenReturn() e verify(). As demais alternativas misturam elementos de outros frameworks ou de anotações do JUnit 5, que não fazem parte do Mockito.

O Mockito é uma ferramenta essencial para testes unitários, permitindo criar objetos simulados (mocks) para isolar a unidade de código que está sendo testada. Com ele, o desenvolvedor pode simular o comportamento de dependências externas, como bancos de dados, serviços web ou outras classes, sem precisar instanciá-las de fato. Isso é fundamental para testar uma classe de forma isolada, focando apenas na sua lógica interna.

Os principais elementos do Mockito são:

  • @Mock: anotação que cria um objeto mock de uma classe ou interface. O mock é um objeto "falso" que não possui a implementação real, mas pode ter seu comportamento definido pelo testador.

  • @InjectMocks: anotação que injeta os mocks criados com @Mock (ou @Spy) na classe que está sendo testada. O Mockito tenta injetar por construtor, setter ou campo, nessa ordem.

  • @Spy: anotação que cria um objeto spy, que é um objeto real, mas que permite que alguns de seus métodos sejam "espionados" ou tenham seu comportamento alterado (stubbed). Diferente do mock, o spy mantém o comportamento real dos métodos não stubbed.

  • when(): método estático usado para definir o comportamento de um mock ou spy. Por exemplo, when(mock.metodo()).thenReturn(valor) define que, quando o método metodo() for chamado no mock, ele deve retornar valor.

  • thenReturn(): método usado em conjunto com when() para especificar o valor de retorno de um método mockado.

  • verify(): método estático usado para verificar se um método de um mock ou spy foi chamado um determinado número de vezes. Por exemplo, verify(mock, times(1)).metodo() verifica se o método metodo() foi chamado exatamente uma vez.

É importante distinguir o Mockito do JUnit, que é o framework de testes mais comum em Java. O JUnit fornece anotações como @Test, @BeforeEach, @AfterEach, @BeforeAll e @AfterAll, que são usadas para estruturar os testes, mas não são elementos do Mockito. A confusão entre esses dois frameworks é uma pegadinha clássica em provas de concursos.

A banca explora exatamente essa confusão: misturar anotações do JUnit com elementos do Mockito. A alternativa correta é a única que contém apenas elementos do Mockito, sem nenhuma anotação do JUnit. As demais alternativas incluem anotações do JUnit 5, como @Test, @BeforeEach, @AfterEach, @BeforeAll e @AfterAll, que não fazem parte do Mockito.

Alternativa A — ❌ Incorreta

Inclui @Test e AftertEach (que seria @AfterEach), que são anotações do JUnit, não do Mockito. Além disso, @Mock, @InjectMocks e @Spy são do Mockito, mas a presença das anotações do JUnit torna a alternativa incorreta.

Alternativa B — ❌ Incorreta

Inclui @BeforeAll e @AfterAll, que são anotações do JUnit 5, não do Mockito. Os métodos when(), thenReturn() e verify() são do Mockito, mas a mistura com anotações do JUnit invalida a alternativa.

Alternativa C — ❌ Incorreta

Todas as anotações listadas (@Test, @BeforeEach, @AfterEach, @BeforeAll, @AfterAll) são do JUnit, não do Mockito. Nenhum elemento do Mockito está presente.

Alternativa D — ❌ Incorreta

Inclui @Test, @BeforeEach e @AfterEach, que são anotações do JUnit, não do Mockito. Embora @Mock, @InjectMocks e @Spy sejam do Mockito, a presença das anotações do JUnit torna a alternativa incorreta.

Alternativa E — ✅ Correta ⟵ GABARITO

Todos os elementos listados (when(), thenReturn(), verify(), @Mock, @InjectMocks e @Spy) são elementos do Mockito. Esta é a única alternativa que contém exclusivamente elementos do framework de mocking, sem misturar anotações do JUnit.

NÃO CAIA NESSA!

A banca mistura anotações do JUnit 5 (@Test, @BeforeEach, @AfterEach, @BeforeAll, @AfterAll) com elementos do Mockito para confundir o candidato. A chave é lembrar que o Mockito é um framework de mocking, focado em criar e verificar mocks, enquanto o JUnit é o framework de execução de testes. Se a alternativa contém @Test ou @BeforeEach, ela não é exclusivamente do Mockito.

PEGA ESSA DICA!

Para acertar questões sobre Mockito, memorize os elementos-chave: @Mock, @InjectMocks, @Spy, when(), thenReturn(), verify(). Se a alternativa trouxer @Test, @BeforeEach, @AfterEach, @BeforeAll ou @AfterAll, ela está misturando com JUnit e, portanto, está incorreta.

Gabarito: letra E

Link permanente: /questoes/fc147287