Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como o método de redefinição da Mockito difere do ClearinVocations


Como o método de redefinição da Mockito difere do ClearinVocations


O Mockito fornece dois métodos que podem ser usados ​​para gerenciar o estado de zombarias durante o teste: `reset ()` e `clearinvocations ()`. Embora ambos os métodos sejam usados ​​para gerenciar o estado simulado, eles servem a propósitos diferentes e têm efeitos distintos nas zombarias.

Mockito `reset ()` método

O método `reset ()` em Mockito é usado para redefinir um objeto simulado completamente. Isso significa que não apenas limpa a chamada de invocação, mas também remove qualquer stubbing que tenha sido definida na simulação. Isso pode ser problemático, pois exige que você reimpere a simulação depois de redefini-lo, se desejar manter um comportamento específico para seus testes. O uso de `reset ()` geralmente é desencorajado porque pode levar a testes complexos e menos focados. É recomendável evitar o uso de `reset ()`, a menos que seja absolutamente necessário, pois pode obscurecer a intenção de seus testes e torná -los mais difíceis de manter [1] [5] [7].

##Mockito `clearinvocations ()` método

O método `clearinvocations ()`, introduzido no Mockito 2.1, permite limpar as contagens de invocação de uma simulação sem redefinir sua barba. Isso significa que você pode continuar usando os mesmos stubs, garantindo que cada teste comece com uma lista limpa em relação às invocações de métodos. Esse método é útil quando você precisa verificar as interações em um cenário com estado ou ao usar estruturas de injeção de dependência, mas ainda deve ser usado com moderação. Geralmente é recomendável evitar o uso de `clearinvocations ()`, a menos que seja necessário, pois também pode complicar os testes se não for usado com pensamento [1] [4] [9].

Diferenças -chave

- Stubbing: `reset ()` Remove toda a barba, exigindo que você reafirme a simulação, enquanto `clearinvocations ()` folhas de folhas intactas.
- Contagem de invocação: Ambos os métodos são claros contagem de invocação, mas `reset ()` faz isso como parte de uma redefinição completa, enquanto `clearinvocations ()` direciona especificamente as contagens de invocação.
- Complexidade do teste: ambos os métodos podem levar a testes mais complexos se não forem usados ​​com cuidado, mas `reset ()` tende a causar mais problemas devido à necessidade de refazer as zombarias.

Em resumo, embora ambos os métodos possam ser usados ​​para gerenciar o estado simulado, `reset ()` é mais invasivo e geralmente desencorajado, enquanto 'clearinvocations () `é mais direcionado, mas ainda deve ser usado criteriosamente para manter testes limpos e focados.

Citações:
[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-aproad-use-of-mockitos-set-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-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://weome.org/mockito-3-wear-Invocations
[10] https://github.com/mockk/mockk/discussions/842