Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvad er begrænsningerne ved at bruge Mockito -argument matchere


Hvad er begrænsningerne ved at bruge Mockito -argument matchere


Mockito -argument matchere er kraftfulde værktøjer, der bruges i enhedstest til fleksibelt at specificere argumenter, når man opsætter mocks. De kommer dog med flere begrænsninger:

1. brugskontekst: Argument matchere kan kun bruges inden for rammerne af stubbing eller verificering af metoder. De kan ikke bruges, når man kalder metoder på det objekt, der blev testet. For eksempel kan du ikke bruge `anystring ()` når du kalder en metode på et reelt objekt; I stedet skal du bruge en konkret værdi [1] [5].

2. Konsistens på tværs af argumenter: Når man bruger en argument matcher til et argument, skal alle andre argumenter også bruge matchere. Du kan ikke blande matchere med konkrete værdier for forskellige argumenter i den samme metodeopkald. Dette er en almindelig kilde til `InvalidUseOfMatcherSexception '[7] [8].

3. spottende begrænsninger: Mockito kan ikke håne på visse metoder som `lig ()`, `hashcode ()` eller endelige metoder. Mens argument matchere kan bruges med metoder, der kan hånes, udvider de ikke kapaciteten til at håne disse begrænsede metoder [3].

4. Argument Matcher-typer: Mockito leverer en række indbyggede argument matchere (f.eks. `Anyint ()`, `antring ()`, `isnull ()`), men du skal vælge den rigtige type til argumentet. For eksempel fungerer det muligvis ikke som forventet at bruge `enhver () med en primitiv type; Brug i stedet en mere specifik matcher som `AnyBoolean ()` til boolske parametre [7].

5. Brugerdefinerede argument matchere: Mens Mockito giver dig mulighed for at oprette brugerdefinerede matchere ved hjælp af metoden `argthat ()`, kræver implementering af `ArgumentMatcher ' -interface omhyggeligt for at sikre, at matcheren opfører sig som forventet i forskellige scenarier [2] [4].

6. Integration med andre biblioteker: Når du bruger Mockito med andre biblioteker som Hamcrest, skal du sikre dig, at integrationen håndteres korrekt. For eksempel kan Sonarqube muligvis markere visse anvendelser af `argthat ()` med Hamcrest -matchere som forkerte, selvom de er gyldige [4].

Sammenfattende, mens Mockito -argument matchere er alsidige, er deres anvendelse begrænset til specifikke sammenhænge og kræver konsistens på tværs af metodargumenter. Derudover overvinder de ikke de grundlæggende begrænsninger af Mockito med hensyn til visse metoder eller klasser.

Citater:
[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-test-advisor/selenium/metods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-brug-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers