Mockito-kehys tarjoaa useita menetelmiä, kuten mock(), verify(), when() jne., joita käytetään Java-sovellusten testaamiseen. Näiden ennalta määritettyjen menetelmien käyttö tekee testaamisesta erittäin helppoa.
Mockito-menetelmien lyhyt kuvaus on alla:
java merkkijonon liittäminen
Mockito mock() -menetelmä
Sitä käytetään tietyn luokan tai käyttöliittymän valeobjektien luomiseen. Mockito sisältää viisi pilkata() menetelmiä eri argumenteilla. Kun emme määrittäneet mitään pilkkoille, ne palauttavat oletusarvot. Kaikki viisi menetelmää suorittavat saman tehtävän pilkkaamalla esineitä.
Seuraavat ovat mock()-menetelmät eri parametreilla:
Syntaksi: pilkata (luokka luokasta pilkaksi)
Syntaksi: pilkata (luokka luokasta pilkaksi, vastauksen oletusvastaus)
Syntaksi: mock(Class classToMock, MockSettings mockSettings)
Syntaksi: mock(Class classToMock, ReturnValues returnValues)
Syntaksi: pilkata (luokka classToMock, merkkijonon nimi)
Seuraava koodinpätkä näyttää kuinka sitä käytetään pilkata() menetelmä:
ToDoService doService = mock(ToDoService.class);
Mockito when() -menetelmä
Se mahdollistaa tukahdusmenetelmät. Sitä tulisi käyttää, kun haluamme pilkata tiettyjen arvojen palauttamiseksi, kun tiettyjä menetelmiä kutsutaan. Yksinkertaisin termein, ' Kun XYZ()-menetelmää kutsutaan, sitten palauta ABC.' Sitä käytetään enimmäkseen, kun on jokin ehto suoritettavana.
Syntaksi: milloin(T methodCall)
Seuraava koodinpätkä näyttää kuinka when()-menetelmää käytetään:
when(mock.someCode ()).thenReturn(5);
Yllä olevassa koodissa thenReturn() käytetään enimmäkseen kanssa kun() menetelmä.
Mockito verify() -menetelmä
The vahvista() -menetelmää käytetään tarkistamaan, kutsutaanko tiettyjä menetelmiä vai ei. Yksinkertaisesti sanottuna se vahvistaa tietyn toiminnan, joka tapahtui kerran testissä. Sitä käytetään testauskoodin alaosassa varmistamaan, että määritettyjä menetelmiä kutsutaan.
Mockito-kehys pitää kirjaa kaikista metodikutsuista parametreineen objektien pilkkaamiseksi. Pilkan jälkeen voimme varmistaa, että määritellyt ehdot täyttyvät vai eivät käyttämällä verify()-menetelmää. Tämäntyyppinen testaus tunnetaan joskus nimellä käyttäytymistestit. Se tarkistaa, että menetelmää kutsutaan oikeilla parametreilla sen sijaan, että se tarkastaisi menetelmäkutsun tuloksen.
Verify()-menetelmää käytetään myös kutsujen määrän testaamiseen. Joten voimme testata kutsujen tarkan määrän käyttämällä kertaa menetelmä, vähintään kerran menetelmä, ja korkeintaan menetelmällä pilkatun menetelmän vuoksi.
Mockito-luokassa on saatavilla kahdenlaisia verify()-menetelmiä, jotka on annettu alla:
Syntaksi: vahvista (T pilka)
Syntaksi: vahvista (T pilka, vahvistustila)
Mockito spy() -menetelmä
Mockito tarjoaa menetelmän pilkata objektia osittain, joka tunnetaan nimellä vakooja menetelmä. Vakoilumenetelmää käytettäessä on olemassa todellinen esine, ja siitä luodaan vakoojia tai tyntejä. Jos emme tukahduta menetelmää käyttämällä vakoojaa, se kutsuu menetelmän todellista käyttäytymistä. Spy()-menetelmän päätehtävä on, että se ohittaa todellisen kohteen tietyt menetelmät. Yksi spy()-menetelmän tehtävistä on, että se varmistaa tietyn menetelmän kutsun.
Mockito-luokassa on saatavilla kahdenlaisia spy()-menetelmiä:
Syntaksi: vakooja (T-objekti)
Syntaksi: vakooja (Class classToSpy)
Seuraava koodinpätkä näyttää kuinka spy()-menetelmää käytetään:
List spyArrayList = spy(ArrayList.class);
Mockito reset() -menetelmä
Mockito reset() -menetelmää käytetään mockien nollaamiseen. Sitä käytetään pääasiassa työskentelyyn säiliöön ruiskutettujen pilkkien kanssa. Yleensä reset()-menetelmä johtaa pitkään koodiin ja huonoihin testeihin. On parempi luoda uusia pilkkoja kuin käyttää reset()-menetelmää. Tästä syystä reset()-menetelmää käytetään harvoin testauksessa.
Reset()-menetelmän allekirjoitus on:
python käärme vs anakonda
public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); }
Mockito verifyNoMoreInteractions() -menetelmä
Sitä käytetään tarkistamaan, että jollakin annetuista pilkoista on vahvistamattomia vuorovaikutuksia. Voimme käyttää tätä menetelmää, kun olemme tarkastaneet kaiken pilkan varmistaaksemme, ettei mockeissa ole vedottu mihinkään muuhun. Se havaitsee myös vahvistamattomat kutsut, jotka esiintyvät ennen testimenetelmää, esimerkiksi setup(), @Before-metodissa tai konstruktorissa. Se on valinnainen menetelmä, eikä meidän tarvitse käyttää sitä jokaisessa testissä.
VerifyNoMoreInteractions()-metodin allekirjoitus on:
public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito verifyZeroInteractions() -menetelmä
Se varmistaa, että annetuilla pilkoilla ei ole tapahtunut vuorovaikutusta. Se havaitsee myös kutsut, jotka ovat tapahtuneet ennen testimenetelmää, esimerkiksi setup(), @Before-metodissa tai konstruktorissa.
VerifyZeroInteractions()-menetelmän allekirjoitus on:
public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito doThrow() -menetelmä
Sitä käytetään, kun tyhjennetään void-menetelmä poikkeuksen tekemiseksi. Se luo uuden poikkeusesiintymän jokaiselle menetelmän kutsulle. Mockito-luokassa on saatavilla kahden tyyppisiä doThrow()-menetelmiä erilaisilla parametreilla, kuten alla on esitetty:
DoThrow()-menetelmän allekirjoitus on:
public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); }
Syntaksi: doThrow (luokka, josta heitetään)
doThrow()-metodin allekirjoitus on:
public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); }
Mockito doCallRealMethod() -menetelmä
Sitä käytetään, kun haluamme kutsua menetelmän todellista toteutusta. Toisin sanoen sitä käytetään osittaisten pilkkien luomiseen kohteesta. Sitä käytetään harvinaisissa tilanteissa, kuten kutsumaan todellisia menetelmiä. Se on samanlainen kuin spy()-menetelmä, ja ainoa ero on, että se johtaa monimutkaiseen koodiin.
DoCallRealMethod()-metodin allekirjoitus on:
public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); }
Mockito doAnswer() -menetelmä
Sitä käytetään, kun haluamme typistää void-menetelmän yleisellä vastaustyypillä. doAnswer()-metodin allekirjoitus on:
public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); }
Mockito doNothing() -menetelmä
Sitä käytetään void-menetelmien asettamiseen tekemättä mitään. DoNothing()-menetelmää käytetään harvoissa tilanteissa. Oletusarvoisesti valeinstanssien void-menetelmät eivät tee mitään, eli mitään tehtäviä ei suoriteta.
np.zeros
DoNothing()-metodin allekirjoitus on:
public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); }
Mockito doReturn() -menetelmä
Sitä käytetään niissä harvoissa tapauksissa, joissa emme voi käyttää Mockito.when(object). Mockito.when(object)-menetelmää suositellaan aina stubingiksi, koska se on argumenttityyppiturvallinen ja luettavampi doReturn()-menetelmään verrattuna.
doReturn()-metodin allekirjoitus on:
public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); }
Mockito inOrder() -metodi
Sitä käytetään luomaan objekteja, jotka mahdollistavat pilkkien tarkistamisen tietyssä järjestyksessä. Järjestyksessä tehty vahvistus on joustavampaa, koska meidän ei tarvitse vahvistaa kaikkia vuorovaikutuksia. Meidän on tarkistettava vain ne vuorovaikutukset, jotka ovat kiinnostuneita testaamisesta (järjestyksessä). Voimme myös käyttää inOrder()-metodia luodaksemme inOrder-objektin, joka välittää pilkkoja, jotka ovat merkityksellisiä in-order-vahvistuksen kannalta.
Mockito.inOrder()-metodin allekirjoitus on:
public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); }
Mockito ignoreStubs() -metodia
Sitä käytetään jättämään huomioimatta annettujen pilkkien todentamismenetelmät. Se on hyödyllinen verifyNoMoreInteractions()- tai verification inOrder()-menetelmien kanssa. Se auttaa myös välttämään ylimääräisten stub-puheluiden todentamisen.
ignoreStubs()-metodin allekirjoitus on:
public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); }
Mockito times() -menetelmä
Sitä käytetään menetelmän kutsujen tarkan määrän tarkistamiseen, mikä tarkoittaa, että se ilmoittaa, kuinka monta kertaa menetelmää kutsutaan. Times()-metodin allekirjoitus on:
public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); }
Mockito never() -menetelmä
Sitä käytetään varmistamaan, että vuorovaikutusta ei tapahtunut. never()-menetelmän allekirjoitus on:
public static VerificationMode never() { return times(0); }
Mockito atLeastOnce() -menetelmä
Sitä käytetään kutsun tarkistamiseen vähintään kerran, mikä tarkoittaa, että menetelmää tulisi kutsua vähintään kerran.
AtLeastOnce()-metodin allekirjoitus on:
public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); }
Mockito vähintään()-metodi
Sitä käytetään kutsun tarkistamiseen vähintään x kertaa. Esimerkiksi annettu vähintään(3) tarkoittaa, että menetelmä kutsuu vähintään kolme kertaa.
AtLeast()-metodin allekirjoitus on:
public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); }
Mockito atMost() -menetelmä
Sitä käytetään kutsun tarkistamiseen enintään x kertaa. Esimerkiksi annettu atMost(3) tarkoittaa, että menetelmä kutsuu enintään kolme kertaa.
atMost()-metodin allekirjoitus on:
public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); }
Mockito calls() -metodi
Se mahdollistaa ei-ahneen vahvistuksen järjestyksessä. Sitä voidaan käyttää vain inOrder()-vahvistusmenetelmän kanssa. Esimerkiksi inOrder.verify(mock, calls(3)).xyzMethod('...');
Calls()-metodin allekirjoitus on:
public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); }
Mockito only() -menetelmä
Se tarkistaa, että annettu menetelmä oli ainoa käytetty menetelmä. Vain()-metodin allekirjoitus on:
numpy linspace
public static VerificationMode only() { return VerificationModeFactory.only(); }
Mockito timeout() -menetelmä
Sen avulla Mockito voi suorittaa tarkistuksen aikakatkaisulla. Se käskee vahvistusta odottamaan tietyn ajan tiettyä vuorovaikutusta sen sijaan, että se epäonnistuisi välittömästi. Siitä voi olla hyötyä testattaessa olemassa olevissa tilanteissa.
Timeout()-menetelmä eroaa after()-menetelmästä, koska after()-menetelmä odottaa koko jakson, ellei lopullista tulosta ilmoiteta, kun taas timeout()-menetelmä pysähtyy heti, kun vahvistus on ohi. Sitä käytetään harvoin testauksessa.
Timeout()-menetelmän allekirjoitus on:
public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); }
Mockito after() -menetelmä
Sen avulla Mockito voi tarkistaa tietyn ajan kuluessa. Olemme jo keskustelleet siitä, että after()-menetelmä eroaa timeout()-menetelmästä.
After()-menetelmän allekirjoitus on:
public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); }
Mockito validateMockitoUsage() -menetelmä
Sitä käytetään kehystilan nimenomaiseen validointiin Mockito-kehyksen virheellisen käytön havaitsemiseksi. Se on Mockiton valinnainen ominaisuus, koska se vahvistaa käytön koko ajan. Sekä sisäänrakennettu juoksija (MockitoJUnitRunner) että sääntö (MockitoRule) kutsuvat validateMockitoUsage() -menetelmää jokaisen testimenetelmän jälkeen.
ValiteMockitoUsage()-metodin allekirjoitus on:
public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); }
Mockito withSettings()-menetelmällä
Sitä käytetään luomaan pilkkaa lisäasetuksilla. Sitä tulee käyttää satunnaisesti testauksessa. Sen sijaan, että käyttäisit withSettings() -menetelmää, luo yksinkertaisia testejä käyttämällä yksinkertaisia pilkkoja. Tärkeimmät syyt MockSettingsin käyttöön ovat
- MockSettingin avulla voimme helposti lisätä muita valeasetuksia tarvittaessa.
- Se yhdistää erilaisia valeasetuksia sekoittamatta koodia.
withSettings()-metodin allekirjoitus on:
public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }