Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra skirtumai tarp @Generatemocks ir @GenerAtenicEmocks


Kokie yra skirtumai tarp @Generatemocks ir @GenerAtenicEmocks


„@Generatemocks“ ir `@generateniceMocks“ anotacijos „Mockito“ yra naudojami kuriant „Mock“ klases, skirtas vienetų tikrinimui DART ir plazdėjimo programose. Nors abi anotacijos tarnauja tam pačiam pagrindiniam tikslui, jos labai skiriasi savo elgesiu, kai tvarkomi nenutrūkstamiems metodo skambučiams.

@Generatemocks

- Elgesys su nenuosekliais metodais: Kai metodas iškviečiamas į modelio objektą, sugeneruotą naudojant „@generatemocks“, ir nebuvo apibrėžtas nė vienas Stup, tuo metodu, „Mockito“ išmes išimtį. Šis elgesys užtikrina, kad aiškiai apibrėžtumėte visus metodus, kurie tikimasi, kad bandymo metu bus iškviesti, ir tai padės pagrobti potencialią priežiūrą atliekant bandymo sąranką.

- Naudojimas: Ši anotacija paprastai naudojama tada, kai norite griežtai valdyti savo tyčiojimis, užtikrinant, kad bet kokie netikėti metodo skambučiai būtų nedelsiant pažymėti kaip klaidos.

- Nusidėvėjimo būsena: „@generatemocks“ laikoma mažiau rekomenduojama, palyginti su „@generatenicemocks“ dėl griežto elgesio, o tai gali sukelti daugiau žodžio bandymo kodą, jei jis nebus tvarkomas atidžiai.

@GenerateniceMocks

- Elgesys su nenuosekliais metodais: Priešingai, tyčiojimai, sugeneruoti naudojant „@generateniceMocks“, grąžins numatytąją, teisinę metodo grąžinimo tipo vertę, kai skambinamas nenustatytas metodas. Ši numatytoji vertė nėra skirta naudoti bandymo logikoje, tačiau padeda išvengti vykdymo klaidų dėl nulinės ar trūkstamų verčių.

- Naudojimas: Ši anotacija rekomenduojama daugeliui naudojimo atvejų, nes jis supaprastina testų rašymą, sumažinant poreikį pritaikyti kiekvieną įmanomą metodo skambutį. Tai daro testus tvirtesnius vengdama gedimų dėl pamirštų kamščių.

- Papildomos funkcijos: „@generatenicemocks“ savo argumentų sąraše leidžia tik „MockSpec“, suteikiant daugiau lankstumo pritaikant sugeneruotas MOCK klases. Pvz., Galite nurodyti pasirinktinį „Mock“ klasės pavadinimą, naudodami „AS“ parametrą „MockSpec“.

Pagrindiniai skirtumai

1. Nepaisytų metodų tvarkymas: Svarbiausias skirtumas yra tai, kaip kiekvienas anotacija tvarko metodo skambučius be aiškių pakabų. `@Generatemocks“ meta išimtį, o „@generateniceMocks“ grąžina numatytąją vertę.

2. Kodo paprastumas ir patikimumas: „@generateniceMocks“ paprastai sukelia paprastesnį ir tvirtesnį bandymo kodą, nes sumažina išsamų kibiravimo poreikį.

3. Tinkinimas: `@GenerateniceMocks“ siūlo daugiau pritaikymo parinkčių per „MockSpec“, leidžiančią naudoti pasirinktinius „Mock“ klasės pavadinimus ir kitas patobulintas konfigūracijas.

Apibendrinant galima pasakyti, kad „@generateniceMocks“ paprastai teikiama pirmenybė, kad būtų galima supaprastinti bandymo kodą ir sumažinti klaidas dėl nenustatytų metodų, tuo tarpu „@generatemocks“ yra griežtesnis metodas, kuris gali būti naudingas konkrečiuose scenarijuose, kai reikia aiškiai valdyti MOCK elgesį [1] [4] [11].

Citatos:
[1] https://www.amaysim.technology/blog/flutter-test-mockito-generatemocks-vs-generatenicemocks
[2] https://www.reddit.com/r/golang/comments/ua0hps/generated_vs_handwrten_mocks/
[3] https://blog.logrocket.com/unit-testing-flutter-code-bockito/
[4] https://pub.dev/documentation/mockito/latest/annotations/generatenicemocks-class.html
[5] https://plugins.jetbrains.com/plugin/23513-generate-frutter-cocks
[6] https://stackoverflow.com/questions/72390220/flutter-generatemocks-is-not-generated-nock klasė
[7] https://github.com/dart-lang/mockito/blob/master/null_safety_readme.md
[8] https://github.com/dart-lang/mockito/issues/367
[9] https://github.com/dart-lang/mockito/issues/422
[10] https://stackoverflow.com/questions/74406977/the-generatemocks-annotation-contains-a-class- which-pears-to-already-be-be-maction
[11] https://pub.dev/packages/mockito