A Mockito keretrendszer számos módszert kínál, például mock(), verify(), when() stb., amelyeket a Java alkalmazások tesztelésére használnak. Ezen előre meghatározott módszerek használata nagyon egyszerűvé teszi a tesztelést.
A Mockito módszerek rövid leírása az alábbiakban található:
java string formátum hosszú
Mockito mock() metódus
Egy adott osztály vagy interfész álobjektumainak létrehozására szolgál. A Mockito ötöt tartalmaz gúny() módszerek különböző érvekkel. Ha nem rendeltünk hozzá semmit a mockokhoz, akkor az alapértelmezett értékeket adják vissza. Mind az öt módszer ugyanazt a funkciót látja el, a tárgyak kigúnyolására.
Íme a mock() metódusok különböző paraméterekkel:
Szintaxis: gúny (Class classToMock)
Szintaxis: mock (Osztály osztály Mock, Válasz alapértelmezett Válasz)
Szintaxis: mock (Class classToMock, MockSettings mockSettings)
Szintaxis: mock (Class classToMock, ReturnValues returnValues)
Szintaxis: mock(Osztály classToMock, Karakterlánc neve)
A következő kódrészlet bemutatja, hogyan kell használni gúny() módszer:
ToDoService doService = mock(ToDoService.class);
Mockito when() metódus
Lehetővé teszi a szúrási módszereket. Akkor kell használni, ha gúnyolódni akarunk, hogy adott értékeket adjunk vissza bizonyos metódusok meghívásakor. Egyszerűen, ' Amikor az XYZ() metódust hívják, akkor vissza az ABC-t.' Leginkább akkor használják, ha valamilyen feltétel van a végrehajtáshoz.
Szintaxis: when(T methodCall)
A következő kódrészlet bemutatja, hogyan kell használni a when() metódust:
when(mock.someCode ()).thenReturn(5);
A fenti kódban thenReturn() legtöbbször a amikor() módszer.
Mockito verify() metódus
A ellenőriz() metódus segítségével ellenőrizhető, hogy egyes megadott metódusok meghívásra kerülnek-e vagy sem. Egyszerűen fogalmazva, érvényesíti azt a bizonyos viselkedést, amely egy teszt során egyszer megtörtént. A tesztelési kód alján használatos annak biztosítására, hogy a meghatározott metódusok meghívásra kerüljenek.
A Mockito keretrendszer nyomon követi az összes metódushívást az objektumok gúnyolásához szükséges paramétereivel. A kigúnyolás után a verify() metódussal ellenőrizhetjük, hogy a meghatározott feltételek teljesülnek-e vagy sem. Ezt a fajta tesztelést néha úgy ismerik viselkedési tesztelés. Azt ellenőrzi, hogy egy metódust a megfelelő paraméterekkel hívják-e meg, ahelyett, hogy a metódushívás eredményét ellenőrizné.
A verify() metódus a hívások számának tesztelésére is szolgál. Így tesztelhetjük a meghívások pontos számát a segítségével alkalommal módszer, legalább egyszer módszer, és legfeljebb módszer egy kigúnyolt módszerért.
A Mockito osztályban kétféle verify() metódus áll rendelkezésre, amelyeket alább adunk meg:
Szintaxis: ellenőrizni (T gúny)
Szintaxis: ellenőrzés (T gúny, VerificationMode mód)
Mockito spy() metódus
A Mockito módszert biztosít egy objektum részleges gúnyolására, amely az úgynevezett kém módszer. A kémmódszer használatakor létezik egy valós objektum, és ebből a valódi objektumból kémek vagy csonkok jönnek létre. Ha nem csonkítunk el egy metódust a spy használatával, akkor a valódi metódus viselkedését fogja hívni. A spy() metódus fő funkciója, hogy felülírja a valós objektum specifikus metódusait. A spy() metódus egyik funkciója, hogy ellenőrzi egy bizonyos metódus meghívását.
A Mockito osztályban kétféle spy() metódus érhető el:
Szintaxis: kém (T objektum)
Szintaxis: kém (Class classToSpy)
A következő kódrészlet a spy() metódus használatát mutatja be:
List spyArrayList = spy(ArrayList.class);
Mockito reset() metódus
A Mockito reset() metódus a mockok visszaállítására szolgál. Főleg a tartályba injektált gúnyokkal való munkához használják. Általában a reset() metódus hosszadalmas kódot és gyenge teszteket eredményez. A reset() metódus helyett jobb új mockeket létrehozni. Éppen ezért a reset() módszert ritkán használják a tesztelés során.
A reset() metódus aláírása a következő:
java objektum egyenlőség
public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); }
Mockito verifyNoMoreInteractions() metódus
Annak ellenőrzésére szolgál, hogy az adott mockok bármelyike rendelkezik-e ellenőrizetlen interakciókkal. Ezt a módszert használhatjuk az összes gúny ellenőrzése után, hogy megbizonyosodjunk arról, hogy semmi mást nem hívtak meg a gúnyokon. Érzékeli azokat az ellenőrizetlen hívásokat is, amelyek a tesztmetódus előtt fordulnak elő, például a setup(), a @Before metódusban vagy a konstruktorban. Ez egy opcionális módszer, és nem kell minden tesztben használnunk.
A verifyNoMoreInteractions() metódus aláírása a következő:
public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito verifyZeroInteractions() metódus
Ellenőrzi, hogy nem történt-e interakció az adott mockeken. A tesztmetódus előtt történt meghívásokat is észleli, például a setup(), a @Before metódusban vagy a konstruktorban.
A verifyZeroInteractions() metódus aláírása a következő:
public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito doThrow() metódus
Akkor használatos, amikor egy void metódust csonkítunk, hogy kivételt dobjunk. Minden metódushíváshoz új kivételpéldányt hoz létre. Kétféle doThrow() metódus érhető el a Mockito osztályban különböző paraméterekkel, az alábbiak szerint:
A doThrow() metódus aláírása a következő:
public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); }
Szintaxis: doThrow (Dobbantandó osztály)
A doThrow() metódus aláírása a következő:
public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); }
Mockito doCallRealMethod() metódus
Akkor használjuk, ha egy metódus valós megvalósítását akarjuk meghívni. Más szavakkal, egy objektum részleges gúnyának létrehozására szolgál. Ritka helyzetekben használják, mint például a valódi módszerek elhívására. Hasonló a spy() metódushoz, és az egyetlen különbség az, hogy összetett kódot eredményez.
A doCallRealMethod() metódus aláírása a következő:
public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); }
Mockito doAnswer() metódus
Akkor használjuk, ha egy void metódust akarunk lecsonkítani egy általános választípussal. A doAnswer() metódus aláírása a következő:
public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); }
Mockito doNothing() metódus
A void metódusok semmittevésre való beállítására szolgál. A doNothing() metódus ritka esetekben használatos. Alapértelmezés szerint az álpéldányokon a void metódusok nem csinálnak semmit, azaz nem hajtanak végre feladatot.
A doNothing() metódus aláírása a következő:
public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); }
Mockito doReturn() metódus
Azokban a ritka esetekben használatos, amikor nem tudjuk használni a Mockito.when(object) függvényt. A Mockito.when(object) metódus mindig javasolt a stubinghoz, mert argumentumtípus-biztonságos és jobban olvasható a doReturn() metódushoz képest.
A doReturn() metódus aláírása a következő:
public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); }
Mockito inOrder() metódus
Olyan objektumok létrehozására szolgál, amelyek lehetővé teszik a gúnyok meghatározott sorrendben történő ellenőrzését. A sorrendben végzett ellenőrzés rugalmasabb, mivel nem kell minden interakciót ellenőriznünk. Csak a tesztelésben érdekelt interakciókat kell ellenőriznünk (sorrendben). Az inOrder() metódussal létrehozhatunk egy inOrder objektumot is, amely a rendelésen belüli ellenőrzés szempontjából releváns gúnyokat továbbít.
A Mockito.inOrder() metódus aláírása a következő:
public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); }
Mockito ignoreStubs() metódust
Arra használják, hogy figyelmen kívül hagyják az adott gúnyok ellenőrzési módszereit. Hasznos a verifyNoMoreInteractions() vagy a verification inOrder() metódusokkal. Segít elkerülni az elakadt hívások redundáns ellenőrzését is.
Az ignoreStubs() metódus aláírása a következő:
public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); }
Mockito times() metódus
A metódushívások pontos számának ellenőrzésére szolgál, ami azt jelenti, hogy deklarálja, hogy egy metódust hányszor hívják meg. A times() metódus aláírása:
java helyettesítés
public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); }
Mockito never() metódus
Ez annak ellenőrzésére szolgál, hogy az interakció nem történt-e meg. A never() metódus aláírása:
public static VerificationMode never() { return times(0); }
Mockito atLeastOnce() metódus
A hívás legalább egyszeri ellenőrzésére szolgál, ami azt jelenti, hogy a metódust legalább egyszer meg kell hívni.
Az atLeastOnce() metódus aláírása a következő:
public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); }
Mockito atLeast() metódus
A meghívás legalább x-szeres ellenőrzésére szolgál. Például az adott atLeast(3) azt jelenti, hogy a metódus legalább háromszor fog meghívni.
Az atLeast() metódus aláírása a következő:
public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); }
Mockito atMost() metódus
Legfeljebb x számú alkalommal használható a hívás ellenőrzésére. Például az adott atMost(3) azt jelenti, hogy a metódus legfeljebb háromszor fog meghívni.
Az atMost() metódus aláírása:
public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); }
Mockito meghívja() metódust
Lehetővé teszi a nem mohó ellenőrzést sorrendben. Csak az inOrder() ellenőrzési módszerrel használható. Például: inOrder.verify(mock, calls(3)).xyzMethod('...');
A calls() metódus aláírása a következő:
public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); }
Csak Mockito() metódus
Ellenőrzi, hogy az adott metódus volt-e az egyetlen meghívott metódus. Az only() metódus aláírása:
git állapot
public static VerificationMode only() { return VerificationModeFactory.only(); }
Mockito timeout() metódus
Lehetővé teszi a Mockito számára, hogy időtúllépéssel végezzen ellenőrzést. Arra utasítja az ellenőrzést, hogy várjon egy adott ideig egy adott interakcióra, nehogy azonnal meghiúsuljon. Hasznos lehet meglévő helyzetekben történő teszteléshez.
A timeout() metódus eltér az after() metódustól, mivel az after() metódus a teljes időtartamig vár, hacsak nem deklarálják a végeredményt, míg a timeout() metódus leáll, amint az ellenőrzés sikeres. Ritkán használják teszteknél.
Az timeout() metódus aláírása a következő:
public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); }
Mockito after() metódus
Lehetővé teszi a Mockito számára, hogy egy adott időtartam alatt ellenőrizze. Korábban már tárgyaltuk, hogy az after() metódus eltér a timeout() metódustól.
Az after() metódus aláírása:
public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); }
Mockito validateMockitoUsage() metódus
A keretállapot explicit érvényesítésére szolgál a Mockito keretrendszer érvénytelen használatának észlelésére. Ez a Mockito opcionális funkciója, mert folyamatosan ellenőrzi a használatot. A beépített futtató (MockitoJUnitRunner) és a szabály (MockitoRule) is meghívja a validateMockitoUsage() metódust minden tesztmetódus után.
A validateMockitoUsage() metódus aláírása a következő:
public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); }
Mockito withSettings() metódussal
Gúnyok létrehozására szolgál további álbeállításokkal. Alkalmanként kell használni a tesztelés során. A withSettings() metódus helyett egyszerű teszteket készítsen egyszerű mockok segítségével. A MockSettings használatának fő okai a következők
- A MockSetting használatával szükség esetén könnyen hozzáadhatunk más álbeállításokat.
- Különböző álbeállításokat kombinál a kód elrontása nélkül.
A withSettings() metódus aláírása a következő:
public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }