Mockito atiestatīšanas atiestatīšana ir funkcija, kas ļauj atkārtoti izmantot izspēles objektus, notīrot to strauji un mijiedarbību. Tomēr `atiestatīšanas ()` izmantošana parasti tiek atturēta, ja vien tas nav absolūti nepieciešams, jo tas var norādīt uz slikti strukturētiem testiem. Šeit ir dažas labākās prakses ņirgāšanās atiestatīšanai Mockito:
izpratne, kad jāizmanto `atiestatīt ()`
-Izvairieties izmantot `atiestatīšanu ()`: galvenais iemesls `atiestatīšana ()` pastāv, lai atbalstītu konteineru iesmidzinātas izsmalcinātas, piemēram, tādas, ko izmanto mantotajā kodā vai trešo personu saskarnēs. Vairumā gadījumu, it īpaši ar labi izstrādātu testa balstītu kodu, jums vajadzētu izvairīties no `atiestatīšanas ()` izmantošanas un tā vietā koncentrēties uz mazu, fokusētu testa metožu izveidi [2] [4].
- Koda smarža: ja jums šķiet, ka testa metodē ir jāizmanto `atiestatīšana ()`, tā varētu būt zīme, ka jūsu testi ir pārāk sarežģīti vai aptver pārāk daudz scenāriju. Tas varētu norādīt uz nepieciešamību reaģēt uz jūsu testiem vai pārbaudīto kodu [2].
alternatīvas `atiestatīt ()`
- Izveidojiet jaunas izspēles: tā vietā, lai atiestatītu izspēles, apsveriet iespēju izveidot jaunus izspēles gadījumus katrai testa metodei. Šī pieeja nodrošina, ka katrs tests sākas ar tīru šīfera, samazinot mijiedarbības risku no iepriekšējiem testiem, kas ietekmē pašreizējo [4].
- Izmantojiet `clearInvocation ()`: ja jums ir jāattīra tikai piesaukšanas vēsture (piemēram, pārbaudīt mijiedarbību, neietekmējot stubbing), izmantojiet `Mockito.ClearInvocations ()`. Šī metode noņem ielūguma vēsturi, neatiestatot stubus, kas var būt noderīgi noteiktos scenārijos [4].
paraugprakse izspēles atiestatīšanai
- Atiestatīt pēc katra testa: ja jums ir jāatjauno ņirgāšanās, dariet to pēc katras testa metodes, izmantojot `@pēc" anotācijas Junit vai "pēcāž ()" `Scalatest. Tas nodrošina, ka katrs tests sākas ar tīru izspēles stāvokli [3] [10].
- Izvairieties no atiestatīšanas pirms testiem: ņirgāšanās atiestatīšana pirms katra testa var radīt neskaidrības par to, kādā stāvoklī izspēles ir testa sākumā. Parasti ir skaidrāk izveidot jaunas izspēles vai atiestatīt pēc testiem [10].
- Izmantojiet ietvara funkcijas: tādos ietvaros kā pavasaris, izmantojot anotācijas, piemēram, `@Mockbean`, pēc katra testa var automātiski apstrādāt izspēli, novēršot nepieciešamību pēc manuālām atiestatījumiem [10].
Secinājums
Kamēr Mockito nodrošina “atiestatīšanas ()” metodi īpašiem lietošanas gadījumiem, parasti ir ieteicams izvairīties no tā izmantošanas par labu tīrākam, koncentrētākam testa dizainam. Izveidojot jaunas izspēles katram testam vai izmantojot ietvara funkcijas, lai pārvaldītu izspēles stāvokli, jūs varat nodrošināt stabilus un uzturējamus testus bez nepieciešamības pēc manuālas atiestatīšanas.
Atsauces:[1] https://www.tutorialupoint.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.]
[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-op-mocks-in-spring-tests-when-using-mockito