Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Cum se compară metoda de resetare a lui Mockito cu alte biblioteci batjocoritoare


Cum se compară metoda de resetare a lui Mockito cu alte biblioteci batjocoritoare


Metoda `reset () a lui Mockito este o caracteristică care vă permite să resetați un obiect Mock, astfel încât să poată fi reutilizat. Cu toate acestea, utilizarea sa este în general descurajată de dezvoltatorii și utilizatorii Mockito, deoarece poate indica teste sau cod slab concepute, care sunt excesiv de complexe și dificil de testat curat [7] [9]. În schimb, abordarea recomandată este de a crea noi machete pentru fiecare metodă de testare pentru a asigura independența și claritatea testării [7] [9].

Comparație cu alte biblioteci batjocoritoare

1. JMock2: Spre deosebire de Mockito, JMock2 folosește un context pentru a gestiona așteptările și informațiile Mock, care este reconstruită pentru fiecare metodă de testare. Aceasta înseamnă că JMock2 nu necesită o resetare explicită, cum ar fi Mockito [10]. Abordarea JMOCK2 ajută la menținerea izolării testelor, fără a fi nevoie să resetați manual machetele.

2. EasyMock: EasyMock nu necesită de obicei o metodă de resetare. Este conceput pentru a crea noi obiecte batjocoritoare pentru fiecare test, similar cu practica recomandată cu Mockito. Szczepan Faber, un dezvoltator Mockito, menționează că nu a avut niciodată nevoie de o caracteristică de resetare în timp ce folosea EasyMock [8].

3. Mockito vs. alte biblioteci: În general, alte biblioteci batjocoritoare precum JMock2 și EasyMock promovează o abordare de testare mai curată, fie gestionând automat statul Mock, fie încurajând crearea de noi batjocuri pentru fiecare test. Metoda `resetare () a lui Mockito este mai mult o excepție, mai degrabă decât norma în cadrele batjocoritoare.

Cele mai bune practici

- Evitați să utilizați `Reset ()`: cu excepția cazului în care este absolut necesar, cum ar fi atunci când o batjocură este injectată de un container și nu poate fi recreată pentru fiecare test, este recomandabil să evitați utilizarea `Reset ()`. În schimb, concentrați -vă pe crearea de teste simple, concentrate, cu noi machete pentru fiecare scenariu [7] [9].

- Utilizați `ClearInvocations ()`: Dacă aveți nevoie să ștergeți interacțiunile fără a reseta Stubbing, utilizați `ClearInvocations ()`. Această metodă vă permite să păstrați Stubbing în timp ce ștergeți orice interacțiuni înregistrate, care pot fi utile în anumite scenarii [5].

- Cod Refactor pentru testabilitate: Dacă vă aflați că trebuie să utilizați `Reset ()` frecvent, poate indica faptul că codul dvs. ar putea beneficia de refactorizare pentru a -l face mai testabil. Aceasta ar putea implica descompunerea metodelor complexe sau îmbunătățirea injecției de dependență [9].

În rezumat, în timp ce Mockito oferă o metodă `resetare (), utilizarea acesteia este în general descurajată în favoarea creării de noi machete pentru fiecare test. Alte biblioteci batjocoritoare promovează adesea practici similare, subliniind teste curate și independente asupra unui management complex de batjocură.

Citări:
[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/appropried-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is-his-an-appropried-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-mockito