Mockito Overte kuchársku knihu
1. Prehľad
Táto kuchárska kniha ilustruje ako používať Mockito overiť v rôznych 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.
Budeme zosmiešňovanie jednoduchého zoznamu implementácia:
public class MyList extends AbstractList {@Override public String get (final int index) {return null; } @Override public int size () {návrat 0; }}
2. Kuchárska kniha
falošné overenie jednoduchého vyvolania
Zoznam mockedList = falošný (MyList.class); mockedList.size (); verifikácia (mockedList) .size ();
overiť počet interakcií s falošnými
Zoznam mockedList = falošný (MyList.class); mockedList.size (); verifikácia (mockedList, times (1)). size ();
overiť, že nenastala interakcia s celým falošným programom
Zoznam mockedList = falošný (MyList.class); verifyZeroInteractions (mockedList);
overiť, či nedošlo k interakcii s konkrétnou metódou
Zoznam mockedList = falošný (MyList.class); verifikácia (mockedList, times (0)). size ();
overte, či neexistujú neočakávané interakcie - malo by to zlyhať:
Zoznam mockedList = falošný (MyList.class); mockedList.size (); mockedList.clear (); verify (mockedList) .size (); verifyNoMoreInteractions (mockedList);
overiť poradie interakcií
Zoznam mockedList = falošný (MyList.class); mockedList.size (); mockedList.add ("parameter"); mockedList.clear (); InOrder inOrder = Mockito.inOrder (mockedList); inOrder.verify (mockedList) .size (); inOrder.verify (mockedList) .add ("a parameter"); inOrder.verify (mockedList) .clear ();
overiť, či nedošlo k interakcii
Zoznam mockedList = falošný (MyList.class); mockedList.size (); verifikácia (mockedList, never ()). clear ();
overiť, či došlo k interakcii minimálne určitý počet opakovaní
Zoznam mockedList = falošný (MyList.class); mockedList.clear (); mockedList.clear (); mockedList.clear (); verifikácia (mockedList, atLeast (1)). clear (); verifikácia (mockedList, atMost (10)). clear ();
overiť interakciu presným argumentom
Zoznam mockedList = falošný (MyList.class); mockedList.add ("test"); verify (mockedList) .add ("test");
overiť interakciu pomocou flexibilného / ľubovoľného argumentu
Zoznam mockedList = falošný (MyList.class); mockedList.add ("test"); verify (mockedList) .add (anyString ());
overiť interakciu pomocou zachytenia argumentu
Zoznam mockedList = falošný (MyList.class); mockedList.addAll (Zoznamy. newArrayList ("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass (List.class); verify (mockedList) .addAll (argumentCaptor.capture ()); Zoznam captureArgument = argumentCaptor. getValue (); assertThat (capturedArgument, hasItem ("someElement"));
3. Záver
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.