Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Care sunt cele mai bune practici pentru resetarea Mock -urilor în Mockito


Care sunt cele mai bune practici pentru resetarea Mock -urilor în Mockito


Resetarea Mock -urilor în Mockito este o caracteristică care vă permite să reutilizați obiectele batjocoritoare, ștergându -și cheful și interacțiunile. Cu toate acestea, utilizarea `resetare ()` este în general descurajată, cu excepția cazului în care este absolut necesar, deoarece poate indica teste slab structurate. Iată câteva cele mai bune practici pentru resetarea Mock -urilor în Mockito:

Înțelegere când să utilizați `reset ()`

-Evitați să utilizați `Reset ()`: Motivul principal `Reset ()` există este de a susține machetele injectate de containere, cum ar fi cele utilizate în Codul moștenitor sau interfețele terțe. În cele mai multe cazuri, în special cu un cod de testare bine conceput, ar trebui să evitați să utilizați `Reset ()` și, în schimb, să vă concentrați pe crearea de metode de testare mici și concentrate [2] [4].

- Miros de cod: Dacă vă aflați că trebuie să utilizați `reset ()` într -o metodă de testare, ar putea fi un semn că testele dvs. sunt prea complexe sau acoperă prea multe scenarii. Aceasta ar putea indica necesitatea de a refactor testele sau codul testat [2].

alternative la `reset ()`

- Creați noi machete: în loc să resetați batjocuri, luați în considerare crearea de noi instanțe de batjocură pentru fiecare metodă de testare. Această abordare asigură că fiecare test începe cu o ardezie curată, reducând riscul de interacțiuni de la testele anterioare care îl afectează pe cel curent [4].

- Utilizați `ClearInvocations ()`: dacă trebuie doar să ștergeți istoricul invocatului (de exemplu, pentru a verifica interacțiunile fără a afecta Stubbing), utilizați `Mockito.ClearInvocations ()`. Această metodă elimină istoricul invocatului fără a reseta butoane, care pot fi utile în anumite scenarii [4].

Cele mai bune practici pentru resetarea batjocoritoarelor

- Resetați după fiecare test: dacă trebuie să resetați machete, faceți acest lucru după fiecare metodă de testare folosind o adnotare@@după` în JUnit sau `Aftereach ()` în scalatest. Acest lucru asigură că fiecare test începe cu o stare de batjocură curată [3] [10].

- Evitați resetarea înainte de teste: resetarea machetelor înainte de fiecare test poate duce la confuzie cu privire la ce stare se află Mock la începutul testului. În general, este mai clar să creezi noi machete sau să resetezi după teste [10].

- Utilizați caracteristici cadru: în cadre precum Spring, folosind adnotări precum `@Mockbean` poate gestiona automat resetarea Mock după fiecare test, eliminând nevoia de resetări manuale [10].

Concluzie

În timp ce Mockito oferă metoda `reset ()` pentru cazuri de utilizare specifice, este în general recomandabil să evităm utilizarea sa în favoarea unui test mai curat și mai concentrat. Prin crearea de noi machete pentru fiecare test sau folosind funcții de cadru pentru a gestiona starea de batjocură, puteți asigura teste robuste și întreținute, fără a fi nevoie de resetări manuale.

Citări:
[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
]
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-lo-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