Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar yra kokių nors bendrų spąstų, kai tyčiojasi iš išimčių su „Mockito“


Ar yra kokių nors bendrų spąstų, kai tyčiojasi iš išimčių su „Mockito“


Kai naudojate „Mockito“ išimtis išimtis, dėl kelių įprastų spąstų jūsų testai gali būti mažiau veiksmingi arba sunkiau išlaikyti. Štai keletas šių spąstų ir kaip jų išvengti:

1.

Viena reikšmingiausių spąstų yra per daug ruoštis. Tai įvyksta, kai tyčiojatės per daug priklausomybių, todėl testai yra trapūs ir sunkiai prižiūrimi. Dėl perteklinio ruošimo bandymai gali labiau sutelkti dėmesį į tyčiojimus, o ne į tikrąjį bandomosios sistemos elgesį. Norėdami to išvengti, sutelkite dėmesį tik į tyčiojimą iš bendradarbių, turinčių ne trivialų elgesį, arba tuos, kurių sąveiką norite patikrinti. Naudokite realius pavyzdžius paprastam bendradarbiavimui [3].

2. Netinkamos išimtys **

„Mockito“ užtikrina, kad išmesta išimtis galioja konkrečiai pritvirtintam metodui. Jei bandysite išmesti išimtį, kurios nėra patikrintų metodų išimčių sąraše, „Mockito“ skųsis. Pvz., Jei metodas nepaskelbia „ioException“, bandant išjuokti jį mesti „ioException“, padarys klaidą [1]. Visada įsitikinkite, kad metodui galioja tyčiojama išimtis.

3. Naudojant „ThenthRow ()` su negaliojančiais metodais **

"Kai (). THENTHROW ()" negali būti naudojamas naudojant tuštumos metodus, nes nėra jokios grąžinimo vertės. Vietoj to, naudokite `dothrow ()` bejėgių metodų. Neteisingai sumaišius šiuos metodus, galite sukelti klaidų [2].

4. Specifiškumo trūkumas **

Kai tyčiojasi iš išimčių, labai svarbu būti konkrečiai apie tai, kurias išimtis išbandote. Venkite per daug ruošdamiesi sutelkdami dėmesį į išimtis, susijusias su bandymo scenarijumi. Tai padeda išlaikyti orientuotus ir prižiūrimus testus [2] [8].

5. Neteisingas egzekucijų tvarkymas **

Įsitikinkite, kad programos kodas yra paruoštas teisingai tvarkyti išimtis, net kai tyčiojasi iš testų. Tai apima išimčių tvarkymo logikos patikrinimą, siekiant užtikrinti, kad ji elgiasi taip, kaip tikėtasi [2].

6. Prasmingų klaidų pranešimų naudojimas **

Išimdami išimtis, įtraukite prasmingus pranešimus, kurie padėtų diagnozuoti problemas, jei testai nepavyksta. Ši praktika padidina jūsų testų aiškumą ir efektyvumą [2].

7. Išimčių tvarkymo logikos testavimas **

Įsitikinkite, kad kodas tvarko išimtis, kaip tikėtasi. Tai apima patikrinimą, ar programa elgiasi teisingai, kai išmetamos išimtys, o tai labai svarbu kuriant atsparias programas [2].

8

„Mockito“ pateikia tokias funkcijas kaip „Reset ()“ ir „ClearInvocations ()` “, skirtos pašalinti. Tačiau jie turėtų būti naudojami taupiai. Iš naujo nustatyti pavyzdį reikia atlikti tik retais atvejais, pavyzdžiui, kai į švirkščiamą talpyklą įšvirkščiamas į modelį ir negalima atkurti kiekvienam bandymui. Išvalymo kvietimai gali būti naudingi, jei atkuriant pavyzdį būtų padaryta didelė pridėtinė vertė [1].

Sužinoję šias spragas ir atlikdami geriausią praktiką, galite veiksmingai naudoti „Mockito“, norėdami išimtis išimtis ir užtikrinti, kad jūsų testai būtų tvirti ir prižiūrimi.

Citatos:
[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-trow-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument- which-has-----hethod-call-on
[5] https://stackoverflow.com/questions/22540108/best-praktices-with-mockito
[6] https://stackoverflow.com/questions/52512548/Mock-method-to-do-ne-not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testting-bulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito