Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo se compara el método de reinicio de Mockito con otras bibliotecas de burla?


¿Cómo se compara el método de reinicio de Mockito con otras bibliotecas de burla?


El método `reset ()` de Mockito es una característica que le permite restablecer un objeto simulado para que pueda reutilizarse. Sin embargo, su uso generalmente es desanimado por los desarrolladores y usuarios de Mockito, ya que puede indicar pruebas o código mal diseñados que es demasiado complejo y difícil de probar limpiamente [7] [9]. En cambio, el enfoque recomendado es crear nuevos simulacros para cada método de prueba para garantizar la independencia y la claridad en las pruebas [7] [9].

Comparación con otras bibliotecas de burla

1. JMock2: a diferencia de Mockito, JMock2 utiliza un contexto para administrar las expectativas y la información simulada, que se reconstruye para cada método de prueba. Esto significa que JMock2 no requiere un reinicio explícito como Mockito [10]. El enfoque de JMOCK2 ayuda a mantener el aislamiento de la prueba sin necesidad de restablecer manualmente las simulacros.

2. EasyMock: EasyMock tampoco requiere un método de reinicio. Está diseñado para crear nuevos objetos simulados para cada prueba, similar a la práctica recomendada con Mockito. Szczepan Faber, un desarrollador de Mockito, menciona que nunca necesitó una función de reinicio mientras usaba EasyMock [8].

3. Mockito vs. Otras bibliotecas: en general, otras bibliotecas burladas como JMock2 y EasyMock promueven un enfoque de prueba más limpio al administrar automáticamente el estado simulado o alentar la creación de nuevos simulacros para cada prueba. El método `reset ()` de Mockito es más una excepción que la norma en los marcos de burla.

Las mejores prácticas

- Evite usar `reset ()`: a menos que sea absolutamente necesario, como cuando un contenedor inyecta un simulacro y no se puede recrear para cada prueba, es aconsejable evitar usar `reset ()`. En su lugar, concéntrese en crear pruebas simples y enfocadas con nuevos simulacros para cada escenario [7] [9].

- Use `ClearInvocations ()`: Si necesita borrar interacciones sin restablecer el rastrojo, use `ClearInvocations ()`. Este método le permite preservar el fragmento mientras limpia las interacciones grabadas, lo que puede ser útil en ciertos escenarios [5].

- Código de refactores para la capacidad de prueba: si se encuentra con la necesidad de usar `reset ()` con frecuencia, puede indicar que su código podría beneficiarse de la refactorización para que sea más comprobable. Esto podría implicar desglosar métodos complejos o mejorar la inyección de dependencia [9].

En resumen, mientras Mockito proporciona un método `reset ()`, su uso generalmente se desaconseja a favor de crear nuevos simulacros para cada prueba. Otras bibliotecas de burla a menudo promueven prácticas similares, enfatizando pruebas limpias e independientes sobre el manejo simulado complejo.

Citas:
[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/appropropiate-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-aproprate-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-mockito