Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kādas ir atšķirības starp @GenerateMocks un @GenerateniceMocks


Kādas ir atšķirības starp @GenerateMocks un @GenerateniceMocks


`@GenenateMocks` un`@genatorateniceMocks anotācijas Mockito tiek izmantotas, lai ģenerētu izspēles nodarbības vienības pārbaudei šautriņu un plandīšanās lietojumprogrammās. Kaut arī abas anotācijas kalpo vienam un tam pašam galvenajam mērķim, tās ievērojami atšķiras, rīkojoties ar neatkārtotām metodes izsaukumiem.

@GenerateMocks

- Uzvedība par neatkārtotām metodēm: ja metode tiek izsaukta uz izspēles objektu, kas ģenerēts ar `@genenateMocks` un šai metodei nav definēts neviens stubs, Mockito izmetīs izņēmumu. Šī uzvedība nodrošina, ka jūs skaidri definējat visām metodēm, kuras, domājams, izsaukt testa laikā, palīdzot panākt potenciālo pārraudzību testa iestatīšanā.

- Lietošana: Šī anotācija parasti tiek izmantota, ja vēlaties stingri kontrolēt jūsu izspēles izturēšanos, nodrošinot, ka visi negaidītie metodes izsaukumi tiek nekavējoties atzīmēti kā kļūdas.

- Nolietojuma statuss: `@generateMocks` tiek uzskatīts par mazāk ieteicams, salīdzinot ar`@genateniceMocks`, pateicoties tā stingrajai uzvedībai, kas var izraisīt vairāk perbosinālas testa kodu, ja tas netiek rūpīgi pārvaldīts.

@GenerateniceMocks

- Uzvedība par neatkārtotām metodēm: Turpretī izspēles, kas ģenerētas ar `@generateniceMocks`, atgriezīs noklusējuma noklusējuma, juridisko vērtību metodes atgriešanās veida vērtībai, kad tiek izsaukta neatjaunota metode. Šī noklusējuma vērtība nav paredzēta lietošanai testa loģikā, bet kalpo, lai novērstu izpildlaika kļūdas nulles vai trūkstošo vērtību dēļ.

- Lietošana: Šī anotācija ir ieteicama lielākajai daļai lietošanas gadījumu, jo tā vienkāršo testa rakstīšanu, samazinot nepieciešamību izspiest katru iespējamo metodes zvanu. Tas padara testus izturīgākus, izvairoties no neveiksmēm aizmirsto stūļu dēļ.

- Papildu funkcijas: `@genateniceMocks` ļauj tikai` MockSpec savā argumentu sarakstā, nodrošinot lielāku elastību, pielāgojot ģenerētās izspēles klases. Piemēram, jūs varat norādīt pielāgotu vārdu izspēles klasei, izmantojot parametru “Mockspec”.

Galvenās atšķirības

1. Neapšautu metožu apstrāde: Visnozīmīgākā atšķirība ir tā, kā katra anotācija apstrādā metodes izsaukumus bez skaidrām stubiem. `@GenerateMocks` izmet izņēmumu, savukārt`@genathateniceMocks` atgriež noklusējuma vērtību.

2. koda vienkāršība un noturība: `@generateniceMocks` parasti rada vienkāršāku un stabilāku testa kodu, samazinot nepieciešamību pēc izsmeļošas stubbing.

3. Pielāgošana: `@GenatateniceMocks` piedāvā vairāk pielāgošanas iespēju, izmantojot` Mockspec`, ļaujot pielāgotus izspēles klases nosaukumus un citas uzlabotas konfigurācijas.

Rezumējot, parasti tiek dota priekšroka “@generateniceMocks”, jo tā spēja vienkāršot testa kodu un samazināt kļūdas, kas saistītas ar neatkārtotām metodēm, savukārt `@generateMocks” nodrošina stingrāku pieeju, kas var būt noderīga noteiktā scenārijā, kur nepieciešama skaidra kontrole pār izspēles izturēšanos [1] [4] [11].

Atsauces:
[1] https://www.amaysim.technology/blog/flutter-test-mockito-generatemocks-vs-generateniceMocks
[2] https://www.reddit.com/r/golang/comments/ua0hps/generated_vs_handwritten_mocks/
[3] https://blog.logrocket.com/unit-testing-flutter-code-mockito/
[4] https://pub.dev/documentation/mockito/latest/annotations/GenerateniceMocks-class.html
[5] https://plugins.jetbrains.com/plugin/23513-generate-flutter-mocks
[6] https://stackoverflow.com/questions/72390220/flutter-generatemocks-is-not ģenerēts-mock-class
[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-coains-a-class-which-apears-to-already-be-mockeded
[11] https://pub.dev/packages/mockito