Plaši izmantojot Mockito argumentu saderētājus, ir jāpatur prātā vairāki veiktspējas apsvērumi. Kaut arī Mockito parasti ir efektīva, plaša argumentu saderētāju izmantošana var ieviest dažus pieskaitījumus, pateicoties Mockito apstrādāt šo saderētāju.
1. Maksera apstrāde virs galvas **
- Argumentu sakritības novērtējums: Ja izmantojat argumentētājus, piemēram, `eq ()`, `any ()` vai `anystring ()`, Mockito ir jānovērtē šie sērkociņi izpildlaikā. Šis novērtēšanas process var radīt nelielu pieskaitāmu izmaksu, salīdzinot ar precīzu vērtību tiešo rezultātu. Tomēr šīs pieskaitāmās izmaksas parasti ir nenozīmīgas, ja vien jums nav darīšanas ar ļoti lielu skaitu izsaukumu vai sarežģītiem saskaņotājiem.2. Materera kombinācijas noteikumi **
- Visiem argumentiem ir jāizmanto saskaņotāji: ja vienam argumentam izmantojat argumentu saskaņotāju, visiem argumentiem ir jāizmanto saskaņotāji. Šis noteikums var izraisīt vairāk perboses kodu un, iespējams, vairāk pieskaitāmās izmaksas, ja jūs izmantojat saskaņotājus visiem argumentiem, kad tikai vienam ir nepieciešams noteikts nosacījums. Piemēram, ja metodei ir trīs parametri un jūs vēlaties izmantot `jebkuru ()` vienam no tiem, jums ir jāizmanto saderētāji arī pārējiem diviem, pat ja jūs būtu varējis izmantot precīzas vērtības.3. Pielāgoti saderētāji **
- Kompleksa loģika: lai gan Mockito nodrošina plašu iebūvēto saskaņotāju klāstu, jums, iespējams, būs jāizveido pielāgoti saskaņotāji konkrētai loģikai. Pielāgotie pielāgotie var būt skaitļošanas ziņā dārgāki, ja tie ir saistīti ar sarežģītu loģiku vai operācijām. Tas ir tāpēc, ka viņiem ir nepieciešams ieviest argumentācijas interfeisu un definēt “atbilstības () metodi, kas var veikt patvaļīgas pārbaudes.4. Pārbaudes virs galvas **
- Pārbaude ar saderētājiem: Pārbaudot mijiedarbību ar izspēles objektiem, izmantojot `Verify ()`, Mockito izmanto arī saskaņotājus, lai pārbaudītu, vai tiek pieņemti pareizie argumenti. Līdzīgi kā stubēšana, pārbaude ar saderīgajiem var ieviest dažus pieskaitījumus, it īpaši, ja jūs pārbaudāt vairākus zvanus ar sarežģītiem saderinātājiem.5. Labākā prakse veiktspējai **
- Izmantojiet specifiskumu saprātīgi: izmantojiet saskaņotājus ar pareizo specifiskuma līmeni. Piemēram, `anyint ()` ir mazāk specifisks un ātrāks nekā `Eq (4)`, bet, izmantojot `ekv. (4)`, kad jums jāpārbauda īpaša vērtība ir precīzāka un būtiski neietekmē veiktspēju.- Izvairieties no nevajadzīgas sarežģītības: neizmantojiet pielāgotus saskaņotājus, ja vien tas nav nepieciešams. Ja testam nepieciešama sarežģīta loģika, lai atbilstu argumentiem, apsveriet iespēju vienkāršot testu vai radoši izmantot esošos saderinātājus.
- Profilējiet testus: ja jūs pamanāt veiktspējas problēmas savos testos, profilējiet tos, lai identificētu sašaurinājumus. Tas ir reti, ja Mockito Matchers ir galvenais nozīmīgu veiktspējas problēmu cēlonis, taču vienmēr ir labi pārbaudīt.
Rezumējot, kaut arī Mockito argumentētāji ievieš dažus pieskaitījumus, tas parasti nav būtiskas bažas, ja vien jums nav darīšanas ar ārkārtīgi sarežģītiem vai sniegumam kritiskiem testiem. Materētāju izmantošanas priekšrocības, piemēram, elastība un skaidrība testa kodeksā, parasti pārsniedz nelielas veiktspējas izmaksas.
Atsauces:.
[2] https://www.digitalocean.com/community/tutorials/mockito-argument-sachers-any-eq
[3] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[4] https://www.softwaretestinghelp.com/mockito-satchers/
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://github.com/etorreborre/specs2/issues/854
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.additionalMatchers
[8] https://stackoverflow.com/questions/73046134/when-should-i-use-argument-satcher-or-passing-argument-directly-when-mockito-uni