Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kas Mockito argumendi sobitajate laialdaselt kasutamisel on jõudluse kaalutlusi


Kas Mockito argumendi sobitajate laialdaselt kasutamisel on jõudluse kaalutlusi


Mockito argumentide sobitajate laialdaselt kasutamisel on meeles pidada mitu jõudluskaalut. Kuigi Mockito on üldiselt tõhus, võib argumentide vastete ulatuslik kasutamine tutvustada mõnda üldkulu, kuna Mockito töötleb neid matše.

1. Matšeri töötlemine üldkulud **

- Argumendi sobitajate hindamine: kui kasutate argumenteerijatega nagu `eq ()`, `ükskõik mida ()` või `ükskõik mida ()`, peab Mockito neid vastereid Runtime'is hindama. See hindamisprotsess võib võrreldes täpsete väärtuste otseselt võrreldes väikese üldkulu. Kuid see üldkulud on tavaliselt tühine, kui te ei tegele väga suure hulga kutsete või keerukate matšidega.

2. sobitajate kombineeritud reeglid **

- Kõik argumendid peavad kasutama sobitajaid: kui kasutate ühe argumendi argumendi sobivat, peavad kõik argumendid kasutama sobitajaid. See reegel võib põhjustada rohkem verbosekoodi ja potentsiaalselt rohkem üldkulusid, kui kasutate kõigi argumentide jaoks sobitajate jaoks, kui ainult üks vajab konkreetset tingimust. Näiteks kui meetodil on kolm parameetrit ja soovite kasutada ühe () `ühe jaoks, peate kasutama ka kahe teise jaoks sobitajaid, isegi kui oleksite võinud kasutada täpseid väärtusi.

3. Kohandatud sobitajad **

- Keeruline loogika: Kuigi Mockito pakub laia valikut sisseehitatud matše, peate võib-olla looma konkreetse loogika jaoks kohandatud sobitajad. Kohandatud sobitajad võivad olla arvutuslikult kallimad, kui need hõlmavad keerulist loogikat või toiminguid. Selle põhjuseks on asjaolu, et nad nõuavad liidese "ArgumentMatcher" rakendamist ja "Matchings ()" meetodi määratlemist, mis suudab läbi viia suvalisi tšekke.

4. Kontrollimine üldkulud **

- Kontrollimine sobitajatega: Kui kontrollida interaktsioonid mõnitavate objektidega, kasutades `Verify ()`, kasutab Mockito ka matšereid, et kontrollida, kas õiged argumendid anti. Sarnaselt karmistamisega saab matšidega kontrollimine tutvustada mõnda üldkulu, eriti kui kontrollite mitut kõnet keerukate matšidega.

5. Performance parimad tavad **

- Kasutage spetsiifilisust targalt: kasutage sobivate spetsiifilisusega matše. Näiteks on `ayint ()` vähem konkreetne ja kiirem kui `eq (4)`, kuid kasutades `Eq (4)`, kui peate konkreetset väärtust kontrollima, on täpsem ja see ei mõjuta oluliselt jõudlust.
- Vältige tarbetut keerukust: vältige kohandatud sobitajate kasutamist, kui pole vaja. Kui test nõuab argumentide sobitamiseks keerulist loogikat, kaaluge testi lihtsustamist või olemasolevate matšide kasutamist loovalt.
- Profiili oma testid: kui märkate testides jõudlusprobleeme, profiilige neid kitsaskohtade tuvastamiseks. See on haruldane, kui Mockito Matchers on oluliste jõudlusküsimuste peamine põhjus, kuid seda on alati hea kontrollida.

Kokkuvõtlikult võib öelda, et kuigi Mockito argumendi kokkuvõtjad tutvustavad mõnda üldkulu, pole see üldiselt oluline mure, kui te ei tegele äärmiselt keerukate või jõudluskriitiliste testidega. Matšide kasutamise eelised, näiteks paindlikkus ja selgus katsekoodis, kaaluvad tavaliselt üles väikesed tulemuslikkuse kulud.

Tsitaadid:
]
]
[3] https://kenkousen.substack.com/p/tales-from-the-jar-wide-amockito
[4] https://www.softwaretestinghelp.com/mockito-matchers/
[5] https://www.toptal.com/java/a-guide-o-veryday-mockito
[6] https://github.com/etorreborre/specs2/issues/854
]
]