Când utilizați Mockito pentru a face excepții batjocoritoare, mai multe capcane comune vă pot face testele mai puțin eficiente sau mai dificile de întreținut. Iată câteva dintre aceste capcane și cum să le evitați:
1. Over-Mocking **
Unul dintre cele mai semnificative capcanele este excesiv. Acest lucru se întâmplă atunci când batjocorești prea multe dependențe, ceea ce duce la teste fragile și greu de întreținut. Over-blocking poate determina testele să se concentreze mai mult pe batjocurări decât pe comportamentul real al sistemului testat. Pentru a evita acest lucru, concentrați-vă pe batjocurarea doar a colaboratorilor care au un comportament non-banal sau pe cei ale căror interacțiuni doriți să le verificați. Folosiți cazuri reale pentru colaborări simple [3].2. Excepții nevalide **
Mockito se asigură că excepția aruncată este valabilă pentru metoda încăpățânată specifică. Dacă încercați să aruncați o excepție care nu se află în lista de excepții verificate a metodei, Mockito se va plânge. De exemplu, dacă o metodă nu declară „ioException”, încercarea de a o batjocori pentru a arunca un `ioexception` va duce la o eroare [1]. Asigurați -vă întotdeauna că excepția batjocoritoare este valabilă pentru metodă.3. Folosind `thenthrow ()` cu metode nule **
`când (). thenthrow ()` nu poate fi utilizat cu metode de gol, deoarece nu există nicio valoare de returnare pentru a batjocori. În schimb, utilizați `dothrow ()` pentru metodele de nule. Amestecarea acestor metode în mod incorect poate duce la erori [2].####. Lipsa specificității **
Când batjocoriți excepțiile, este crucial să fiți specific cu privire la excepțiile pe care le testați. Evitați supra-batjocoriți-vă concentrându-vă pe excepții relevante pentru scenariul de testare. Acest lucru ajută la menținerea testelor concentrate și întreținute [2] [8].
5. Manevrarea incorectă a execuțiilor **
Asigurați -vă că codul aplicației este pregătit să gestioneze corect excepțiile, chiar și atunci când este batjocorit în timpul testelor. Aceasta include testarea logicii pentru gestionarea excepțiilor pentru a se asigura că se comportă așa cum era de așteptat [2].6. Utilizarea mesajelor de eroare semnificative **
Când batjocoriți excepții, includeți mesaje semnificative pentru a ajuta la diagnosticarea problemelor dacă testele nu reușesc. Această practică îmbunătățește claritatea și eficacitatea testelor dvs. [2].7. Logica de manipulare a excepțiilor de testare
Asigurați -vă că codul gestionează excepțiile așa cum era de așteptat. Aceasta implică verificarea dacă aplicația se comportă corect atunci când sunt aruncate excepții, ceea ce este crucial pentru construirea de aplicații rezistente [2].8. Resetarea și curățarea Mock -urilor **
Mockito oferă caracteristici precum `reset ()` și `ClearInvocations ()` pentru gestionarea Mocks. Cu toate acestea, acestea ar trebui utilizate cu ușurință. Resetarea unei batjocuri ar trebui făcută numai în cazuri rare, cum ar fi atunci când o batjocură este injectată de un recipient și nu poate fi recreată pentru fiecare test. Invocările de compensare poate fi utilă dacă recrearea unui batjocură ar duce la o cheltuială semnificativă [1].Fiind conștienți de aceste capcane și urmând cele mai bune practici, puteți utiliza în mod eficient Mockito pentru a batjocori excepții și pentru a vă asigura că testele dvs. sunt robuste și întreținute.
Citări:[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browerstack.com/guide/mockito-hthrow-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
]
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-o-not-hthrow-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