Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo difiere el método de reinicio de Mockito de las incendiaciones?


¿Cómo difiere el método de reinicio de Mockito de las incendiaciones?


Mockito proporciona dos métodos que se pueden utilizar para administrar el estado de simulacros durante las pruebas: `reset ()` y `ClearInvocations ()`. Si bien ambos métodos se utilizan para manejar el estado simulado, tienen diferentes propósitos y tienen efectos distintos en las simulacros.

Método `reset ()` de Mockito

El método `reset ()` en Mockito se usa para restablecer por completo un objeto simulado. Esto significa que no solo borra los recuentos de invocación, sino que también elimina cualquier trozo que se haya establecido en el simulacro. Esto puede ser problemático porque requiere que vuelva a torcer el simulacro después de restablecerlo si desea mantener un comportamiento específico para sus pruebas. El uso de `reset ()` generalmente se desanima porque puede conducir a pruebas complejas y menos enfocadas. Se recomienda evitar usar `reset ()` a menos que sea absolutamente necesario, ya que puede oscurecer la intención de sus pruebas y hacerlas más difíciles de mantener [1] [5] [7].

Método `ClearInvocations ()`

El método `ClearInvocations ()`, introducido en Mockito 2.1, le permite borrar los recuentos de invocación de un simulacro sin restablecer su rizos. Esto significa que puede continuar usando los mismos trozos al tiempo que garantiza que cada prueba comience con una pizarra limpia con respecto a las invocaciones de métodos. Este método es útil cuando necesita verificar las interacciones en un escenario con estado o cuando se usa marcos de inyección de dependencia, pero aún debe usarse con moderación. Generalmente se recomienda evitar usar `ClearInvocations ()` a menos que sea necesario, ya que también puede complicar las pruebas si no se usa cuidadosamente [1] [4] [9].

Diferencias clave

- Stubbing: `reset ()` elimina todos los trozos, lo que requiere que vuelva a hacer el simulacro, mientras que `ClearInvocations ()` deja intacto.
- Contaciones de invocación: ambos métodos claros cuenta de la invocación, pero `reset ()` lo hace como parte de un reinicio completo, mientras que `clareInvocations ()` se dirige específicamente a los recuentos de invocación.
- Complejidad de prueba: ambos métodos pueden conducir a pruebas más complejas si no se usan cuidadosamente, pero `reset ()` tiende a causar más problemas debido a la necesidad de volver a los simulacros.

En resumen, si bien ambos métodos pueden usarse para gestionar el estado simulado, `reset ()` es más invasivo y generalmente desanimado, mientras que `ClearInvocations ()` es más dirigido, pero aún debe usarse juiciosamente para mantener pruebas limpias y enfocadas.

Citas:
[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-aproprate-use-of-mockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.ClearInvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.ClearInvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-mock-after-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-mimes
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-Clear-Invocations
[10] https://github.com/mockk/mockk/discussions/842