Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Quali sono le migliori pratiche per il ripristino dei becchi in mockito


Quali sono le migliori pratiche per il ripristino dei becchi in mockito


Il ripristino dei mockito in mockito è una caratteristica che consente di riutilizzare gli oggetti simulati cancellando le loro tozioning e interazioni. Tuttavia, l'uso di `reset ()` è generalmente scoraggiato a meno che non sia assolutamente necessario, in quanto può indicare test scarsamente strutturati. Ecco alcune migliori pratiche per il ripristino dei becchi in mockito:

comprensione quando utilizzare `reset ()`

-Evitare l'utilizzo di `reset ()`: il motivo principale `reset ()` esiste è supportare le simulazioni iniettate da container, come quelle utilizzate nel codice legacy o nelle interfacce di terze parti. Nella maggior parte dei casi, in particolare con un codice basato sul test ben progettato, è necessario evitare di usare `reset ()` e concentrarti invece sulla creazione di piccoli metodi di test focalizzati [2] [4].

- Odore di codice: se ti ritrovi a dover utilizzare `reset ()` all'interno di un metodo di prova, potrebbe essere un segno che i test sono troppo complessi o coprono troppi scenari. Ciò potrebbe indicare la necessità di refactoring dei test o del codice testato [2].

alternative a `reset ()`

- Crea nuovi simulazioni: invece di ripristinare i becchetti, prendi in considerazione la creazione di nuove istanze finte per ciascun metodo di prova. Questo approccio garantisce che ogni test inizi con una lavagna pulita, riducendo il rischio di interazioni dai test precedenti che incidono su quello attuale [4].

- Utilizzare `clearInvocations ()`: se devi solo cancellare la cronologia dell'invocazione (ad esempio, per verificare le interazioni senza influire suging), utilizzare `mockito.clearinvocations ()`. Questo metodo rimuove la cronologia di invocazione senza ripristinare gli stub, che possono essere utili in determinati scenari [4].

Best practice per il ripristino delle beffe

- Ripristina dopo ogni test: se è necessario reimpostare le domelle, fallo dopo ogni metodo di test utilizzando un'annotazione@@After` in Junit o `Aftoach ()` in Scalatest. Ciò garantisce che ogni test inizi con uno stato finto pulito [3] [10].

- Evitare il ripristino prima dei test: reimpostare i dombi prima che ogni test possa portare a confusione su quale stato si trova il simulazione all'inizio del test. È generalmente più chiaro creare nuove simulazioni o ripristinare dopo i test [10].

- Utilizzare caratteristiche del framework: in framework come Spring, l'uso di annotazioni come `@mockbean` può gestire automaticamente il ripristino finto dopo ogni test, eliminando la necessità di reset manuali [10].

Conclusione

Mentre Mockito fornisce il metodo `reset ()` per casi d'uso specifici, è generalmente consigliabile evitarne l'uso a favore di una progettazione di test più pulita e focalizzata. Creando nuovi simulazioni per ogni test o utilizzando le funzionalità Framework per gestire lo stato simulato, è possibile garantire test robusti e mantenebili senza la necessità di reset manuali.

Citazioni:
[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-appied-usao-of-mockitos-reset-method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mock-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