Mockito Kuchárka kedy / potom
1. Prehľad
Táto kuchárka ukazuje ako používať Mockito na konfiguráciu správania v rôznych príkladoch a prípadoch použitia.
The formát kuchárskej knihy je zameraný na príklad a praktické - nie sú potrebné žiadne ďalšie podrobnosti a vysvetlenia.
A samozrejme, ak sa chcete dozvedieť viac o testovaní pomocou Mockita, prečítajte si tu ďalšie články o Mockito.
Budeme zosmiešňovanie jednoduchého zoznamu implementácia - rovnaká implementácia, ktorú sme použili v predchádzajúcej kuchárskej knihe:
public class MyList extends AbstractList {@Override public String get (final int index) {return null; } @Override public int size () {návrat 1; }}
2. Kuchárska kniha
nakonfigurovať jednoduché návratové správanie pre falošné
MyList listMock = Mockito.mock (MyList.class); when (listMock.add (anyString ())). thenReturn (false); boolean added = listMock.add (randomAlphabetic (6)); assertThat (pridané, je (nepravdivé));
nakonfigurovať návratové správanie pre falošný alternatívny spôsob
MyList listMock = Mockito.mock (MyList.class); doReturn (false) .when (listMock) .add (anyString ()); boolean added = listMock.add (randomAlphabetic (6)); assertThat (pridané, je (nepravdivé));
nakonfigurovať falošnú správu tak, aby vyvolala výnimku na volanie metódy
@Test (očakáva sa = IllegalStateException.class) public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown () {MyList listMock = Mockito.mock (MyList.class); kedy (listMock.add (anyString ())). thenThrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }
nakonfigurovať správanie metódy s void návratovým typom - vyvolať výnimku nakonfigurovať správanie viacerých hovorov nakonfigurovať správanie špióna nakonfigurovať metódu na volanie skutočnej základnej metódy nakonfigurovať falošný spôsob volania s vlastnou odpoveďou Tento formát je experimentom - zverejňujem niektoré svoje interné vývojové kuchárske knihy na danú tému - na stránkach Google Guava, Hamcrest a teraz Mockito. Cieľom je mať tieto informácie ľahko dostupné online - a doplniť ich, kedykoľvek narazím na nový užitočný príklad. Implementácia všetkých týchto príkladov a útržkov kódu nájdete na GitHub - toto je projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.MyList listMock = Mockito.mock (MyList.class); doThrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();
MyList listMock = Mockito.mock (MyList.class); keď (listMock.add (anyString ())) .thReturn (false) .thThTh (IllegalStateException.class); listMock.add (randomAlphabetic (6)); listMock.add (randomAlphabetic (6)); // vyhodí výnimku
Inštancia MyList = nový MyList (); MyList spy = Mockito.spy (inštancia); doThrow (NullPointerException.class) .when (spy) .size (); spy.size (); // vyhodí výnimku
MyList listMock = Mockito.mock (MyList.class); keď (listMock.size ()). thenCallRealMethod (); assertThat (listMock.size (), equalTo (1));
MyList listMock = Mockito.mock (MyList.class); doAnswer (vyvolanie -> „Vždy rovnaké“). when (listMock) .get (anyInt ()); Reťazcový prvok = listMock.get (1); assertThat (prvok, je (rovná sa („Vždy rovnaká“)));
3. Záver