Mockitova metoda reset () `je funkcija, ki omogoča ponastavitev posmehljivega predmeta, da ga je mogoče ponovno uporabiti. Vendar njegovo uporabo na splošno odvrnejo razvijalci in uporabniki Mockito, saj lahko označujejo slabo zasnovane teste ali kodo, ki je preveč zapletena in jo je težko preizkusiti [7] [9]. Namesto tega je priporočeni pristop ustvariti nove posnetke za vsako preskusno metodo, da se zagotovi neodvisnost in jasnost pri testiranju [7] [9].
Primerjava z drugimi posmehljivimi knjižnicami
1. JMOCK2: Za razliko od Mockito -a JMOCK2 uporablja kontekst za upravljanje pričakovanj in posmehovanih informacij, ki so obnovljene za vsako preskusno metodo. To pomeni, da JMOCK2 ne zahteva izrecne ponastavitve, kot to počne Mockito [10]. JMOCK2 -ov pristop pomaga ohranjati testno izolacijo, ne da bi bilo treba ročno ponastaviti posmeh.
2. Easymock: Easymock tudi običajno ne zahteva metode ponastavitve. Zasnovan je za ustvarjanje novih posmehljivih predmetov za vsak test, podobno kot priporočena praksa z Mockito. Szczepan Faber, razvijalec Mockito, omenja, da med uporabo Easymock nikoli ni potreboval funkcije ponastavitve [8].
3. Mockito proti drugim knjižnicam: Na splošno druge posmehljive knjižnice, kot sta JMOCK2 in Easymock, spodbujajo čistejši pristop testiranja tako, da samodejno upravljajo s stanjem posmehovanja ali spodbudijo ustvarjanje novih posnetkov za vsak test. Mockitova metoda reset () `je bolj izjema in ne norma v posmehljivih okvirih.
Najboljše prakse
- Izogibajte se uporabi `reset ()`: razen če je to nujno potrebno, na primer, ko se posmeh vbrizga zabojnik in ga ni mogoče ponovno ustvariti za vsak test, priporočljivo je, da se izognete uporabi `reset ()`. Namesto tega se osredotočite na ustvarjanje preprostih, osredotočenih testov z novimi posnetki za vsak scenarij [7] [9].
- Uporabite `clearInvocations ()`: Če morate očistiti interakcije, ne da bi ponastavili trpljenje, uporabite `clearInvocations ()`. Ta metoda vam omogoča, da ohranite trpljenje med čiščenjem vseh posnetih interakcij, kar je lahko koristno v določenih scenarijih [5].
- Refactor Code za pristnost: Če se vam zdi, da morate uporabljati `reset ()` pogosto, lahko kaže, da bi lahko vaša koda koristila refactoring, da bi bila bolj preizkusna. To bi lahko vključevalo razčlenitev zapletenih metod ali izboljšanje vbrizgavanja odvisnosti [9].
Če povzamemo, medtem ko Mockito zagotavlja metodo reset () `, se njegova uporaba na splošno odvrne v prid ustvarjanju novih posnetkov za vsak test. Druge posmehljive knjižnice pogosto spodbujajo podobne prakse, poudarjajo čiste in neodvisne teste glede zapletenega upravljanja posmeha.
Navedbe:[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/aproPeate-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackexchange.com/Questions/188299/is-this-an-approise-use-of-mockitos-reset-method
[10] https://stackoverflow.com/Questions/18164123/how-to-clean-p-p-mocks-in-spring-test-whewen-uporaba-mockito