Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Există capcanele comune atunci când batjocoriți excepțiile cu Mockito


Există capcanele comune atunci când batjocoriți excepțiile cu Mockito


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