A redefinição de manchas no Mockito é um recurso que permite reutilizar objetos simulados, limpando suas mortidas e interações. No entanto, o uso de `reset ()` é geralmente desencorajado, a menos que seja absolutamente necessário, pois pode indicar testes mal estruturados. Aqui estão algumas práticas recomendadas para redefinir zombarias no Mockito:
entendendo quando usar `reset ()`
-Evite o uso de `reset ()`: a principal razão `reset ()` existe é suportar zombas injetadas em contêineres, como as usadas no código herdado ou interfaces de terceiros. Na maioria dos casos, especialmente com o código bem projetado, você deve evitar o uso de `reset ()` e, em vez disso, se concentre na criação de métodos de teste pequenos e focados [2] [4].
- Cheiro de código: se você precisar usar `reset ()` em um método de teste, pode ser um sinal de que seus testes são muito complexos ou cobrem muitos cenários. Isso pode indicar a necessidade de refatorar seus testes ou o código que está sendo testado [2].
alternativas para `reset ()`
- Crie novas zombarias: em vez de redefinir zombarias, considere criar novas instâncias simuladas para cada método de teste. Essa abordagem garante que cada teste comece com uma lista limpa, reduzindo o risco de interações de testes anteriores que afetam o atual [4].
- Use `clearInvocations ()`: se você precisar limpar apenas o histórico de invocação (por exemplo, para verificar as interações sem afetar a malha), use `mockito.clearinvocations ()`. Este método remove o histórico de invocação sem redefinir os stubs, que podem ser úteis em certos cenários [4].
práticas recomendadas para redefinir zombares
- Redefinir após cada teste: se você precisar redefinir zombarias, faça -o após cada método de teste usando uma anotação `@depois` no JUNIT ou` AfterEach () `no Scalatest. Isso garante que cada teste comece com um estado simulado limpo [3] [10].
- Evite redefinir antes dos testes: Redefinir zombarias antes de cada teste pode levar a confusão sobre o estado em que a simulação está no início do teste. Geralmente é mais claro criar novas zombarias ou redefinir após os testes [10].
- Use os recursos da estrutura: nas estruturas como a primavera, usando anotações como `@mockbean` pode lidar automaticamente com a redefinição simulada após cada teste, eliminando a necessidade de redefinições manuais [10].
Conclusão
Embora o Mockito forneça o método `reset ()` para casos de uso específicos, geralmente é aconselhável evitar seu uso em favor do design de teste mais limpo e mais focado. Ao criar novas zombarias para cada teste ou usar os recursos da estrutura para gerenciar o estado simulado, você pode garantir testes robustos e sustentáveis sem a necessidade de redefinições manuais.
Citações:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-aproad-use-of-mockitos-set-method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mocking-spring-boot/
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to-everyday-mockito
[10] https://stackoverflow.com/questions/18164123/how-to-clean up-mocks-in-spring-tests-when-using-mockito