Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vannak -e valamilyen teljesítmény -megfontolások, ha a Mockito argumentum -illesztőket széles körben használják


Vannak -e valamilyen teljesítmény -megfontolások, ha a Mockito argumentum -illesztőket széles körben használják


Ha a Mockito Argumentum -matchereket széles körben használja, számos teljesítmény szempontot kell szem előtt tartani. Noha a Mockito általában hatékony, az érv -illesztők széles körű használata bevezethet bizonyos fejeket, mivel a Mockito hogyan dolgozza fel ezeket a mérkőzéseket.

1. Matcher feldolgozás fölött **

- Argumentum -matcher értékelés: Amikor olyan érv -illesztőket használ, mint például az `eq ()`, `bármilyen ()` vagy „bármistring ()”, a Mockito -nak ki kell értékelnie ezeket a meccseket futási időben. Ez az értékelési folyamat enyhe általános költségeket vezethet be a pontos értékek közvetlen átadásához képest. Ez a költség azonban általában elhanyagolható, hacsak nem nagyon sok meghívással vagy összetett mérkőzéssel foglalkozik.

2. Matcher kombinált szabályok **

- Minden érvnek meg kell használnia a meccseket: Ha egy argumentum -illesztőt használ egy argumentumhoz, akkor minden érvnek meg kell használnia a meccseket. Ez a szabály több szóbeli kódhoz és potenciálisan több fölött vezethet, ha minden érvhez csatlakozókat használ, ha csak egy adott feltételre van szüksége. Például, ha egy módszernek három paramétere van, és a „bármi ()” -et használni szeretné, akkor a másik kettőhez is használni kell a meccseket is, még akkor is, ha pontos értékeket is használhatott volna.

3. Egyedi matchers **

- Komplex logika: Míg a Mockito a beépített csatlakozók széles skáláját biztosítja, előfordulhat, hogy egyedi logikát kell létrehoznia. Az egyéni csatlakozók számítási szempontból drágábbak lehetnek, ha összetett logikát vagy műveleteket vonnak maguk után. Ennek oka az, hogy szükségük van az „ArgumentMatcher” interfész megvalósítására és egy „Matches ()” módszer meghatározására, amely tetszőleges ellenőrzéseket végezhet.

4. Ellenőrzés felett **

- Ellenőrzés a csatlakozókkal: A MOCK objektumokkal való interakciók ellenőrzése Amikor a „Verify ()” használatával, a Mockito a csatlakozókat is használja annak ellenőrzésére, hogy a helyes érvek átadtak -e. Hasonlóan a daganatokhoz, a mérkőzésekkel végzett ellenőrzés bevezethet néhány fejét, különösen, ha több hívást igazol a komplex mérkőzésekkel.

5. A teljesítmény legjobb gyakorlatai **

- Használjon bölcsen a specifitást: Használjon megfelelő szintű specifitási szintű csatlakozókat. Például, a "Anyint ()" kevésbé specifikus és gyorsabb, mint az `EQ (4)`, de az „Eq (4)” használata, ha egy adott értéket ellenőrizni kell, pontosabb, és nem befolyásolja jelentősen a teljesítményt.
- Kerülje a felesleges bonyolultságot: Kerülje el az egyéni csatlakozókat, ha szükséges. Ha a tesztnek komplex logikát igényel az érvekhez, akkor fontolja meg a teszt egyszerűsítését vagy a meglévő csatlakozók kreatív használatát.
- Profilja a teszteket: Ha a tesztek teljesítményproblémáit veszi észre, profilja azokat a szűk keresztmetszetek azonosításához. Ritka, hogy a Mockito -mérkőzések a jelentős teljesítményproblémák elsődleges oka, de mindig jó igazolni.

Összefoglalva: míg a Mockito Argumentum-meccsek bevezetnek bizonyos költségeket, ez általában nem jelent jelentős aggodalmat, hacsak nem foglalkozik rendkívül összetett vagy teljesítménykritikus tesztekkel. A matcherek használatának előnyei, mint például a rugalmasság és az egyértelműség a tesztkódban, általában meghaladják a kisebb teljesítményköltségeket.

Idézetek:
[1] https://stackoverflow.com/questions/56559146/junit-using-eq-argument-matcher-vs-passing-string-directly/56572275
[2] https://www.digitalocean.com/community/tutorials/mockito-argument-matchers-any- eq
[3] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[4] https://www.softwaretestinghelp.com/mockito-matchers/
[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-stesting-advisor/selenium/classes/org.mockito.additionalMatchers
[8] https://stackoverflow.com/questions/73046134/when-should-i-use-argument-matcher-or-orpassing-argument--directly-when-mockito-uni