Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Millised on erinevused @GeneRatemocks ja @GeneRateNicEMocks


Millised on erinevused @GeneRatemocks ja @GeneRateNicEMocks


Mockito -s kasutatakse annotatsioone `@genetemocks ja`@generatenicemocks` annotatsioonid, et genereerida pilkklasside ühiku testimiseks DART -is ja lehvitades rakendustes. Kuigi mõlemad annotatsioonid täidavad sama peamist eesmärki, erinevad nad oma käitumise osas märkimisväärselt, kui käitlete manustamata meetodikõnesid.

@geneRateMocks

- Käitumine on sukeldumata meetodite jaoks: Kui meetodil kutsutakse@@generatemocks'iga genereeritud pilkeobjektile ja selle meetodi jaoks pole määratletud ühtegi tükki, teeb Mockito erandi. See käitumine tagab, et määratlete selgesõnaliselt stubid kõigi meetodite jaoks, mida oodatakse testi ajal, aidates katse seadistamisel potentsiaalseid järelevalvet saavutada.

- Kasutamine: seda annotatsiooni kasutatakse tavaliselt siis, kui soovite ranget kontrolli oma pilkamiste käitumise üle, tagades, et ootamatute meetodikõnede viga on viivitamatult märgistatud.

- Amortiseerimise olek: "@generatemocks" peetakse vähem soovitatavaks võrreldes oma range käitumise tõttu "@generatenicemocks", mis võib põhjustada rohkem verbose testkoodi, kui seda hoolikalt hallata.

@geneRateNicEmocks

- Käitumine on sukeldumata meetodite jaoks: Vastupidiselt tagastab "@generatenicemocks" genereeritud pildid meetodi tagastamise tüübi vaikimisi, juriidilise väärtuse, kui kutsutakse sukeldumata meetodit. See vaikeväärtus ei ole ette nähtud kasutamiseks testloogikas, vaid see aitab vältida käitusaja vigu nulli või puuduvate väärtuste tõttu.

- Kasutamine: seda annotatsiooni on soovitatav enamiku kasutusjuhtude jaoks, kuna see lihtsustab testide kirjutamist, vähendades vajadust iga võimaliku meetodikõnega. See muudab testid tugevamaks, vältides unustatud tükkide tõttu ebaõnnestumisi.

- Lisafunktsioonid: `@generatenicemocks` lubab oma argumentide loendis ainult` mockspec'i, pakkudes genereeritud pilkamisklasside kohandamisel suuremat paindlikkust. Näiteks saate MOCK -klassi kohandatud nime määrata, kasutades parameetrit `mockspec.

Peamised erinevused

1. Sukeldumata meetodite käsitsemine: kõige olulisem erinevus on see, kuidas iga annotatsioon meetodil käitleb ilma selgesõnaliste kärudeta. `@Generatemocks` viskab erandi, samal ajal kui"@generatenicemocks "tagastab vaikeväärtuse.

2. Koodi lihtsus ja vastupidavus: `@generatenicemocks` põhjustab üldiselt lihtsamat ja tugevamat testkoodi, vähendades vajadust ammendava tükitsemise järele.

3. Kohandamine: `@generatenicemocks` pakub rohkem kohandamisvalikuid` mockspec` kaudu, võimaldades kohandatud pilkeklassi nimesid ja muid täpsemaid konfiguratsioone.

Kokkuvõtlikult eelistatakse üldiselt "@generatenicemocks", et lihtsustada testkoodi ja vähendada vigastamata meetoditest põhjustatud vigu, samal ajal kui "@genetemocks" pakub rangemat lähenemisviisi, mis võib olla kasulik konkreetsete stsenaariumide korral, kus on vaja selgesõnalist kontrolli pilkava käitumise üle [1] [4] [4] [11].

Tsitaadid:
]
[2] https://www.reddit.com/r/golang/comments/ua0hps/generated_vs_handwritten_mocks/
[3] https://blog.logrocket.com/unit-testing-flutte-code-mockito/
]
[5] https://plugins.jetbrains.com/plugin/23513-generate-flutter-Mocks
]
[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
]
[11] https://pub.dev/packages/mockito