Pri použití Mockito na zosmiešňovacie výnimky môžu niekoľko bežných úskalí sťažiť alebo ťažšie udržiavať vaše testy. Tu sú niektoré z týchto nástrah a ako sa im vyhnúť:
1. Nadmerné posúvanie **
Jedným z najdôležitejších úskalí je nadmerné posúvanie. K tomu dochádza, keď zosmiešňujete príliš veľa závislostí, čo vedie k testom, ktoré sú krehké a ťažko udržiavateľné. Nadmerné posúvanie môže spôsobiť, že testy sa viac sústredia na falošné, ako na skutočné správanie testovaného systému. Aby ste tomu zabránili, zamerajte sa na zosmiešnenie iba spolupracovníkov, ktorí majú netriviálne správanie, alebo tí, ktorých interakcie chcete overiť. Na jednoduché spolupráce používajte skutočné inštancie [3].2. Neplatné výnimky **
Mockito zaisťuje, že vyhodená výnimka je platná pre špecifickú metódu Stubbed. Ak sa pokúsite vyhodiť výnimku, ktorá nie je v zozname kontrolovaných výnimiek, Mockito sa sťažuje. Napríklad, ak metóda nevyhlási `ioException`, pokus o zosmiešnenie, aby vyhodil` ioException`, bude mať za následok chybu [1]. Vždy sa uistite, že zosmiešňovaná výnimka je platná pre túto metódu.3. Použitie `thenthRow ()` s neplatnými metódami **
`when (). thenthRow ()` sa nedá použiť s neplatnými metódami, pretože neexistuje žiadna návratová hodnota. Namiesto toho použite `DothRow ()` pre neplatné metódy. Nesprávne zmiešanie týchto metód môže viesť k chybám [2].4. Nedostatok špecifickosti **
Pri výsmechu výnimiek je nevyhnutné byť konkrétne o tom, ktoré výnimky testujete. Vyhnite sa nadmernému posúvaniu zameraním sa na výnimky relevantné pre testovací scenár. To pomáha udržiavať testy zamerané a udržateľné [2] [8].5. Nesprávne spracovanie poprav **
Uistite sa, že kód aplikácie je pripravený správne zvládnuť výnimky, aj keď sa počas testov zosmiešňuje. To zahŕňa testovanie logiky na riešenie výnimiek, aby sa zabezpečilo, že sa správa podľa očakávania [2].6. Použitie zmysluplných chybových správ **
Pri výsmechu výnimiek uveďte zmysluplné správy, ktoré pomôžu diagnostikovať problémy, ak zlyhajú testy. Táto prax zvyšuje jasnosť a efektívnosť vašich testov [2].7. Logika manipulácie s výnimkou testovania **
Uistite sa, že kód rieši výnimky podľa očakávania. Zahŕňa to overenie, či sa aplikácia správa správne, keď sú vyhodené výnimky, čo je rozhodujúce pre budovanie odolných aplikácií [2].8. Resetovanie a vymazanie falošných **
Mockito poskytuje funkcie ako `reset ()` a `clearInvocations ()` pre správu falošných škvŕn. Mali by sa však používať striedmo. Resetovanie falošného by sa malo vykonávať iba v zriedkavých prípadoch, napríklad keď je falošný injekt injektovaný nádobou a nemožno ho znovu vytvoriť pre každý test. Vymazanie vyčistenia môže byť užitočné, ak by znovu vytvorenie falošného návrhu viedlo k významným režijným nákladom [1].Tým, že si uvedomíte tieto úskalia a podľa najlepších postupov, môžete efektívne používať Mockito na zosmiešňujúce výnimky a zabezpečiť, aby boli vaše testy robustné a udržiavateľné.
Citácie:[1] https://www.toptal.com/java/a-guide-to-veryday-mockito
[2] https://www.browserStack.com/guide/Mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/Mockito-exception-wen-requires-an-argument-hich-has-to-be----method-call-on
[5] https://stackoverflow.com/questions/22540108/Best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/Mock-method-to-do-no-therw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/Mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito