Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hva er begrensningene ved å bruke Mockito -argumentkampere


Hva er begrensningene ved å bruke Mockito -argumentkampere


Mockito -argumentets matchere er kraftige verktøy som brukes i enhetstesting for å fleksibelt spesifisere argumenter når du setter opp hån. Imidlertid kommer de med flere begrensninger:

1. Brukskontekst: Argumentkampere kan bare brukes i sammenheng med stubbing eller verifiserende metoder. De kan ikke brukes når du kaller metoder på objektet som testes. For eksempel kan du ikke bruke `anystring ()` når du ringer en metode på et reelt objekt; I stedet bør du bruke en betongverdi [1] [5].

2. Konsistens på tvers av argumenter: Når du bruker en argument matcher for ett argument, må alle andre argumenter også bruke matchere. Du kan ikke blande matchere med konkrete verdier for forskjellige argumenter i samme metodeanrop. Dette er en vanlig kilde til `InvaliduseofMatchersException` [7] [8].

3. Mocking Begrensninger: Mockito kan ikke spotte visse metoder som `lik ()`, `HashCode ()`, eller endelige metoder. Mens argumentasjonsmatchere kan brukes med metoder som kan hånes, utvider de ikke muligheten til å spotte disse begrensede metodene [3].

4. Argument Matcher-typer: Mockito gir en rekke innebygde argumentasjonsmatchere (f.eks. `Anyint ()`, `anystring ()`, `isNull ()`), men du må velge riktig type for argumentet. For eksempel å bruke `hvilken som helst ()` med en primitiv type fungerer for eksempel som forventet; Bruk i stedet en mer spesifikk matcher som `anyboolean ()` for boolske parametere [7].

5. Tilpassede argumentasjonsmatchere: Mens Mockito lar deg lage tilpassede matchere ved å bruke `ArgThat ()` -metoden, krever implementering av `ArgumentMatcher` -grensesnittet nøye vurdering for å sikre at matcheren oppfører seg som forventet i forskjellige scenarier [2] [4].

6. Integrering med andre biblioteker: Når du bruker Mockito med andre biblioteker som Hamcrest, må du forsikre deg om at integrasjonen blir håndtert på riktig måte. For eksempel kan Sonarqube flagge visse bruksområder av `ArgThat ()` med Hamcrest -matchere som feil, selv om de er gyldige [4].

Oppsummert, mens Mockito -argumentets matchere er allsidige, er bruken deres begrenset til spesifikke kontekster og krever konsistens på tvers av metodeargumenter. I tillegg overvinner de ikke de grunnleggende begrensningene i Mockito angående visse metoder eller klasser.

Sitasjoner:
[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/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-matchers-in-case-of-usage-mockitohamcrest-adapter/38429
[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-matchers
[8] https://www.baeldung.com/mockito-argument-matchers