Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

348
Visualizações
Cómo resolver la excepción de stubbing innecesario

Mi código es el siguiente,

 @RunWith(MockitoJUnitRunner.class) public class MyClass { private static final String code ="Test"; @Mock private MyClassDAO dao; @InjectMocks private MyClassService Service = new MyClassServiceImpl(); @Test public void testDoSearch() throws Exception { final String METHOD_NAME = logger.getName().concat(".testDoSearchEcRcfInspections()"); CriteriaDTO dto = new CriteriaDTO(); dto.setCode(code); inspectionService.searchEcRcfInspections(dto); List<SearchCriteriaDTO> summaryList = new ArrayList<SearchCriteriaDTO>(); inspectionsSummaryList.add(dto); when(dao.doSearch(dto)).thenReturn(inspectionsSummaryList);//got error in this line verify(dao).doSearchInspections(dto); } }

Estoy obteniendo por debajo de la excepción

 org.mockito.exceptions.misusing.UnnecessaryStubbingException: Unnecessary stubbings detected in test class: Test Clean & maintainable test code requires zero unnecessary code. Following stubbings are unnecessary (click to navigate to relevant line of code): 1. -> at service.Test.testDoSearch(Test.java:72) Please remove unnecessary stubbings or use 'silent' option. More info: javadoc for UnnecessaryStubbingException class. at org.mockito.internal.exceptions.Reporter.formatUnncessaryStubbingException(Reporter.java:838) at org.mockito.internal.junit.UnnecessaryStubbingsReporter.validateUnusedStubs(UnnecessaryStubbingsReporter.java:34) at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:49) at org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:103) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Por favor ayúdenme como resolver

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Al principio, debe verificar su lógica de prueba. Normalmente hay 3 casos. Primero, se está burlando del método incorrecto (cometió un error tipográfico o alguien cambió el código probado para que el método simulado ya no se use). En segundo lugar, su prueba está fallando antes de que se llame a este método. En tercer lugar, su lógica falla si / cambia la rama en algún lugar del código para que no se llame al método simulado.

Si este es el primer caso, siempre desea cambiar el método simulado por el utilizado en el código. Con el segundo y el tercero depende. Por lo general, solo debe eliminar este simulacro si no tiene ningún uso. Pero a veces hay ciertos casos en pruebas parametrizadas, que deberían tomar este camino diferente o fallar antes. Luego puede dividir esta prueba en dos o más, pero eso no siempre es atractivo. 3 métodos de prueba con posiblemente 3 proveedores de argumentos pueden hacer que su prueba parezca ilegible. En ese caso, para JUnit 4 silencia esta excepción con cualquiera

 @RunWith(MockitoJUnitRunner.Silent.class)

anotación o si está utilizando un enfoque de regla

 @Rule public MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.LENIENT);

o (el mismo comportamiento)

 @Rule public MockitoRule rule = MockitoJUnit.rule().silent();

Para las pruebas JUnit 5, puede silenciar esta excepción utilizando esta anotación provista en mockito-junit-jupiter :

 @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) class JUnit5MockitoTest { }
about 4 years ago · Santiago Trujillo Relatório

0

Reemplace @RunWith(MockitoJUnitRunner.class) con @RunWith(MockitoJUnitRunner.Silent.class) .

about 4 years ago · Santiago Trujillo Relatório

0

Para mí, ni las @Rule ni @RunWith(MockitoJUnitRunner.Silent.class) funcionaron. Fue un proyecto heredado en el que actualizamos a mockito-core 2.23.0.

Podríamos deshacernos de UnnecessaryStubbingException usando:

 Mockito.lenient().when(mockedService.getUserById(any())).thenReturn(new User());

en vez de:

 when(mockedService.getUserById(any())).thenReturn(new User());

No hace falta decir que debería mirar el código de prueba, pero primero necesitábamos compilar las cosas y ejecutar las pruebas;)

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda