logo

Mock vs. Stub vs. Spy

Falešný

Mocky jsou objekty, které ukládají volání metod. Označuje se jako dynamické obaly pro závislosti používané v testech. Používá se k zaznamenávání a ověřování interakce mezi třídami Java. Maketa je známá jako nejvýkonnější a nejflexibilnější verze testovacích dvojic. Používáme metodu zesměšňování tzv falešný() .

Hlavní funkcí použití zesměšňovaných objektů je, že poskytuje plnou kontrolu nad chováním zesměšňovaných objektů. Falešné objekty se obecně používají pro ověření chování . Termín chování znamená kontrolu správných metod a cest, které jsou aplikovány na objekty.

Mocky se většinou vytvářejí pomocí knihovny nebo zesměšňujícího rámce, jako je Mockito, JMock a EasyMock. Používá se pro testování velké sady testů, kde útržky nestačí. Jednou ze základních funkcí mocku je, že si můžeme ověřit, kolikrát je daná metoda volána.

srovnatelný řetězec v Javě

Následující fragment kódu ukazuje, jak používat mock().

přejmenování adresáře
 ToDoService doService = mock(ToDoService.class); 

Pahýl

Stub jsou objekty, které obsahují předdefinovaná data a používají je k poskytování odpovědí během testů. Jinými slovy, útržek je objekt, který se podobá skutečnému objektu s minimálním počtem metod potřebných pro test. Stub se používá, když nechceme používat objekty, které by dávaly odpověď s reálnými daty. Pahýl se označuje jako nejlehčí a nejstatičtější verze testu se zdvojnásobuje.

Hlavní funkce pahýlů jsou:

  • Vždy vrací předdefinovaný výstup bez ohledu na vstup.
  • Může být použit k tomu, aby se podobal databázovým objektům.
  • Pahýly se používají ke snížení složitosti, ke které dochází při vytváření skutečných objektů. Používají se především k předvádění státní ověření .

Vyzvědač

Špioni jsou známí jako částečně zesměšňovat předměty . To znamená, že špión vytvoří částečný předmět nebo poloviční figurínu skutečného předmětu napichováním nebo špehováním těch skutečných. Při špehování zůstává skutečný objekt nezměněn a my jen špehujeme některé jeho specifické metody. Jinými slovy, vezmeme existující (skutečný) objekt a nahradit nebo vyzvědač jen některé jeho metody.

tučný text css

Špioni jsou užiteční, když máme obrovskou třídu plnou metod a chceme některé metody zesměšňovat. V tomto scénáři bychom měli upřednostňovat použití špionů před zesměšňováním a útržky. Volá skutečné chování metody, pokud metody nejsou potlačeny.

V Mockito se k vytváření špionážních objektů používá metoda spy(). Umožňuje nám volat normální metody skutečného objektu. Následující fragment kódu ukazuje, jak používat metodu spy().

 List spyArrayList = spy(ArrayList.class); 

Rozdíl mezi Stub a Mock

Parametry Pahýl Falešný
Zdroj dat Zdroj dat útržků je pevně zakódován. Obvykle je pevně spojen s testovací sadou. Údaje o simulacích jsou nastaveny testy.
Vytvořil Útržky jsou obvykle psané ručně a některé jsou generovány nástroji. Mocky se obvykle vytvářejí pomocí knihovny třetích stran, jako je Mockito, JMock a WireMock.
Používání Stuby se používají hlavně pro jednoduché testovací sady. Mocky se používají hlavně pro velké testovací sady.
Grafické uživatelské rozhraní (GUI) Stuby nemají GUI. Mocky mají GUI.

Níže jsou uvedeny některé rozdíly mezi falešným a špionem:

Parametry Falešný Vyzvědač
Používání Makety se používají k vytvoření plně falešných nebo falešných objektů. Používá se hlavně ve velkých testovacích sadách. Špióni se používají k vytváření částečných nebo polovičních falešných objektů. Stejně jako falešní jsou špioni také používáni ve velkých testovacích sadách.
Výchozí chování Při použití falešných objektů je výchozí chování metod (když nejsou potlačeny) nic nedělat (nic neprovádí). Při použití špionážních objektů je výchozí chování metod (pokud nejsou potlačeny) chováním skutečné metody.

V našich předchozích výukových programech jsme diskutovali o některých příkladech stubování, zesměšňování a špehování. Chcete-li lépe porozumět rozdílu mezi urážením, zesměšňováním a špehováním, projděte si příklady.