Ha a Mockito -t a kivételek gúnyolására használják, számos általános buktatóvá teszi a teszteket kevésbé hatékony vagy nehezebb fenntartani. Íme néhány ilyen buktató és hogyan lehet elkerülni őket:
1. Túlmegés **
Az egyik legjelentősebb buktató a túltermelés. Ez akkor fordul elő, amikor túl sok függőséget gúnyol, ami törékeny és nehezen fenntartható tesztekhez vezet. A túltermelés miatt a tesztek inkább a gúnyokra összpontosítanak, mint a vizsgált rendszer tényleges viselkedésére. Ennek elkerülése érdekében összpontosítson csak a nem triviális viselkedésű együttműködők gúnyolására, vagy azoknak, akiknek interakcióit ellenőrizni kívánja. Használjon valódi példányokat az egyszerű együttműködéshez [3].2. Érvénytelen kivételek **
A Mockito biztosítja, hogy a kivetés kivétele érvényes legyen a specifikus megfogalmazott módszerre. Ha megpróbál egy kivételt dobni, amely nem szerepel a módszer ellenőrzött kivételeinek listájában, a Mockito panaszkodik. Például, ha egy módszer nem deklarálja az „ioException” -t, akkor a „ioException” eldobására törekszik, hibát eredményez [1]. Mindig ügyeljen arra, hogy a gúnyos kivétel érvényes legyen a módszerre.3. A „Thenthrow ()” használatával érvénytelen módszerekkel **
`mikor (). Thenthrow ()` Nem használható üresség módszerekkel, mert nincs visszatérési érték a gúnyolódáshoz. Ehelyett használja a `dothrow ()` `void módszerekhez. Ezeknek a módszereknek a helytelen keverése hibákhoz vezethet [2].4. A specifitás hiánya **
A kivételek gúnyolódásakor elengedhetetlen, hogy konkrét legyen, mely kivételeket tesztel. Kerülje el a túlmintést azáltal, hogy a teszt forgatókönyve szempontjából releváns kivételekre összpontosít. Ez elősegíti a tesztek koncentrált és karbantartható tartását [2] [8].5. A kivégzések helytelen kezelése **
Győződjön meg arról, hogy az alkalmazási kód készen áll a kivételek helyes kezelésére, még akkor is, ha a tesztek során gúnyolódik. Ez magában foglalja a kivételek kezelésének logikájának tesztelését annak biztosítása érdekében, hogy a várt módon viselkedjen [2].6. Értelmes hibaüzenetek használata **
A kivételek gúnyolódásakor olyan értelmes üzeneteket tartalmazzon, amelyek segítenek a problémák diagnosztizálásában, ha a tesztek meghibásodnak. Ez a gyakorlat javítja a tesztek egyértelműségét és hatékonyságát [2].7. Kivételkezelési logika tesztelése **
Győződjön meg arról, hogy a kód a várt módon kezeli a kivételeket. Ez magában foglalja annak ellenőrzését, hogy az alkalmazás helyesen viselkedik -e, amikor kivételeket dobnak, ami elengedhetetlen a rugalmas alkalmazások kiépítéséhez [2].8. A gúnyok visszaállítása és törlése **
A Mockito olyan funkciókat kínál, mint a `reset ()` és a „clearInvocations ()` a gúnyok kezelésére. Ezeket azonban óvatosan kell használni. A modell visszaállítását csak ritka esetekben szabad megtenni, például amikor egy konténer injektál egy gúnyot, és nem hozható újra létrehozni az egyes tesztekhez. A meghívások elszámolása akkor hasznos lehet, ha a modell újjáépítése jelentős fejjel vezetne [1].Ha tudatában van ezeknek a buktatóknak és a bevált gyakorlatok követését, hatékonyan használhatja a Mockito -t a kivételek gúnyolására, és biztosíthatja, hogy a tesztek robusztusak és karbantarthatók legyenek.
Idézetek:[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-thow-exception
[3] https://javanexus.com/blog/avoiding-mockito-stesting-bitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument--has-has-a-Be-a-ethod-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-throw-an-exception/52514628
[7] https://contributors.cala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-mocks-with-mockito