Izmantojot Mockito, lai izsmietu izņēmumus, vairākas parastās nepilnības var padarīt jūsu testus mazāk efektīvus vai grūtāk saglabāt. Šeit ir dažas no šīm nepilnībām un kā no tām izvairīties:
1. Pārmērīga mocēšana **
Viena no nozīmīgākajām nepilnībām ir pārmērīga mocīšana. Tas notiek, kad jūs izsmejat pārāk daudz atkarību, izraisot trauslu un grūti uzturējamu testu testus. Pārmācība var izraisīt testu vairāk koncentrēšanos uz izsmalcinātajām izspēlēm, nevis uz faktisko testētās sistēmas izturēšanos. Lai no tā izvairītos, koncentrējieties uz ņirgāšanos tikai par līdzstrādniekiem, kuriem ir ne-triviāla uzvedība, vai arī tiem, kuru mijiedarbību vēlaties pārbaudīt. Izmantojiet reālus gadījumus vienkāršai sadarbībai [3].2. Nederīgi izņēmumi **
Mockito nodrošina, ka izmešanas izņēmums ir derīgs īpašajai metodei. Ja jūs mēģināt iemest izņēmumu, kas nav metodes pārbaudīto izņēmumu sarakstā, Mockito sūdzēsies. Piemēram, ja metode nepaziņo par “ioException”, mēģinot to izsmiet, lai mest “ioException”, radīs kļūdu [1]. Vienmēr pārliecinieties, ka metodei ir derīgs izņēmums.3. Izmantojot `thenthrow ()` ar tukšām metodēm **
`Kad (). Thenthrow ()` nevar izmantot ar tukšām metodēm, jo nav atdeves vērtības. Tā vietā tukšuma metodēm izmantojiet `dothrow ()`. Šīs metožu sajaukšana nepareizi var izraisīt kļūdas [2].4. Specifiskuma trūkums **
Ņirgājoties par izņēmumiem, ir svarīgi būt konkrētam attiecībā uz to, kurus izņēmumus pārbaudāt. Izvairieties no pārmērīgas mocēšanas, koncentrējoties uz izņēmumiem, kas attiecas uz testa scenāriju. Tas palīdz saglabāt testus fokusētus un uzturējamus [2] [8].5. Nepareiza izpildes vadīšana **
Pārliecinieties, ka lietojumprogrammas kods ir gatavs pareizi rīkoties ar izņēmumiem, pat ja tiek ņirgāties par testu laikā. Tas ietver loģikas pārbaudi izņēmumu apstrādei, lai nodrošinātu, ka tā uzvedas, kā paredzēts [2].6. Nozīmīgu kļūdu ziņojumu izmantošana **
Ņirgājoties par izņēmumiem, iekļaujiet jēgpilnus ziņojumus, lai palīdzētu diagnosticēt problēmas, ja testi neizdodas. Šī prakse uzlabo jūsu testu skaidrību un efektivitāti [2].7. Izņēmumu apstrādes loģikas pārbaude **
Pārliecinieties, ka kods apstrādā izņēmumus, kā paredzēts. Tas nozīmē pārbaudīt, vai lietojumprogramma rīkojas pareizi, kad tiek izmesti izņēmumi, kas ir izšķiroši, lai veidotu elastīgu pielietojumu [2].8. ņirgāšanās atiestatīšana un tīrīšana **
Mockito nodrošina tādas funkcijas kā `atiestatīšana ()` un `clearInvocations ()` ņirgāšanos. Tomēr tie būtu jāizmanto taupīgi. Izspēles atiestatīšana jāveic tikai retos gadījumos, piemēram, kad konteiners ievada izspēli un to nevar atjaunot katram testam. Izsaukšana var būt noderīga, ja izspēles atjaunošana novedīs pie ievērojamām pieskaitāmām izmaksām [1].Apzinoties šīs nepilnības un sekojot labākajai praksei, varat efektīvi izmantot Mockito, lai izsmietu izņēmumus un pārliecinātos, ka jūsu testi ir izturīgi un uzturējami.
Atsauces:[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pufls
.
[5] https://stackoverflow.com/questions/22540108/best-pracices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-nothow-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