Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kādi ir Mockito argumentētāju izmantošanas ierobežojumi


Kādi ir Mockito argumentētāju izmantošanas ierobežojumi


Mockito argumentētāji ir jaudīgi rīki, ko izmanto vienības pārbaudei, lai elastīgi norādītu argumentus, iestatot izspēles. Tomēr viņiem ir vairāki ierobežojumi:

1. Lietošanas konteksts: Argumentu saskaņotājus var izmantot tikai stubbing vai pārbaudīšanas metožu kontekstā. Tos nevar izmantot, izsaucot metodes uz pārbaudāmā objekta. Piemēram, jūs nevarat izmantot `anyString ()`, izsaucot metodi uz reāla objekta; Tā vietā jums jāizmanto konkrēta vērtība [1] [5].

2. Konsekvence starp argumentiem: Izmantojot argumentu saskaņotāju vienam argumentam, visiem citiem argumentiem ir jāizmanto arī saderētāji. Tajā pašā metodes zvanā nevar sajaukt samaterus ar konkrētām vērtībām dažādiem argumentiem. Tas ir izplatīts “invaliduseofMatchersexception” avots ”[7] [8].

3. ņirgāšanās ierobežojumi: Mockito nevar izsmiet noteiktas metodes, piemēram, `Equals ()`, `hashcode ()` vai galīgās metodes. Kaut arī argumentētājus var izmantot ar metodēm, kuras var izsmiet, tie nepaplašina spēju izsmiet šīs ierobežotās metodes [3].

4. Argumentētāja tipi: Mockito nodrošina dažādus iebūvētus argumentus (piemēram, `anyint ()`, `anyString ()`, `isnull ()`), bet jums jāizvēlas pareizais argumenta veids. Piemēram, izmantojot "jebkuru ()" ar primitīvu tipu, iespējams, nedarbosies, kā paredzēts; Tā vietā Būla parametriem izmantojiet konkrētāku sērkociņu, piemēram, `Anyboolean ()` [7].

5. Pielāgotu argumentu saderētāji: lai gan Mockito ļauj izveidot pielāgotus samierinātājus, izmantojot “Argthat () metodi,“ ArgumentMatcher ”interfeisa ieviešanai ir rūpīgi jāapsver, lai nodrošinātu, ka saderētājs izturas kā gaidīts dažādos scenārijos [2] [4].

6. Integrācija ar citām bibliotēkām: izmantojot Mockito ar citām bibliotēkām, piemēram, Hamcrest, pārliecinieties, ka integrācija tiek pareizi apstrādāta. Piemēram, Sonarqube varētu apzīmēt noteiktus `argthat ()` lietojumus ar Hamcrest Matchers kā nepareizu, pat ja tie ir derīgi [4].

Rezumējot, kaut arī Mockito argumentētāji ir daudzpusīgi, to izmantošana ir ierobežota ar īpašiem kontekstiem un prasa konsekvenci dažādos metožu argumentos. Turklāt tie nepārvar Mockito pamatlīgumus attiecībā uz noteiktām metodēm vai klasēm.

Atsauces:
[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
.
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-shatchers
[8] https://www.baeldung.com/mockito-argument-sachers