logo

Mock vs. Stub vs. Spy

Pilkata

Mockit ovat objekteja, jotka tallentavat menetelmäkutsuja. Sitä kutsuttiin testeissä käytettyjen riippuvuuksien dynaamisilla kääreillä. Sitä käytetään tallentamaan ja tarkistamaan Java-luokkien välinen vuorovaikutus. Mock tunnetaan testituplapelin tehokkaimpana ja joustavimpana versiona. Käytämme pilkkaamiseen ns pilkata() .

Pilkan käytön päätehtävä on, että se antaa täyden hallinnan pilkattujen kohteiden käyttäytymiseen. Pilaobjekteja käytetään yleensä käyttäytymisen varmistus . Käsite käyttäytyminen tarkoittaa oikeiden menetelmien ja polkujen tarkistamista, joita on käytetty objekteihin.

Mockit luodaan enimmäkseen käyttämällä kirjastoa tai pilkkaavaa kehystä, kuten Mockito, JMock ja EasyMock. Sitä käytetään laajan testisarjan testaamiseen, kun tyngät eivät riitä. Yksi pilkan olennaisista toiminnoista on, että voimme tarkistaa, kuinka monta kertaa tiettyä menetelmää kutsutaan.

Seuraava koodinpätkä näyttää kuinka mock()-toimintoa käytetään.

 ToDoService doService = mock(ToDoService.class); 

Tynkä

Stubit ovat objekteja, jotka sisältävät ennalta määritettyä dataa ja käyttävät sitä vastausten antamiseen testien aikana. Toisin sanoen tynkä on objekti, joka muistuttaa todellista objektia testiin tarvittavalla vähimmäismäärällä menetelmiä. Stubeja käytetään, kun emme halua käyttää objekteja, jotka antaisivat vastauksen todellisella tiedolla. Tynkää kutsutaan kevyimmäksi, ja testin staattisin versio kaksinkertaistuu.

Stubien päätoiminnot ovat:

  • Se palauttaa aina ennalta määritellyn lähdön tulosta riippumatta.
  • Sitä voidaan käyttää muistuttamaan tietokantaobjekteja.
  • Stubeja käytetään vähentämään monimutkaisuutta, joka ilmenee todellisten objektien luomisen aikana. Niitä käytetään pääasiassa esiintymiseen valtion vahvistus .

Vakooja

Vakoojat tunnetaan nimellä osittain pilkkaa esineitä . Se tarkoittaa, että vakooja luo osittaisen esineen tai puolet todellisesta esineestä tukahduttamalla tai vakoilemalla todellisia esineitä. Vakoilussa todellinen kohde pysyy muuttumattomana, ja me vain vakoilemme sen tiettyjä menetelmiä. Toisin sanoen otamme olemassa olevan (todellisen) kohteen ja korvata tai vakooja vain osa sen menetelmistä.

Vakoilijat ovat hyödyllisiä, kun meillä on valtava luokka täynnä menetelmiä ja haluamme pilkata tiettyjä menetelmiä. Tässä skenaariossa meidän pitäisi mieluummin käyttää vakoojia kuin pilkkaa ja tynkä. Se kutsuu todellista menetelmän käyttäytymistä, jos menetelmiä ei ole stubed.

vastaa menetelmää javassa

Mockitossa spy()-menetelmää käytetään vakoiluobjektien luomiseen. Sen avulla voimme kutsua todellisen objektin normaaleja menetelmiä. Seuraava koodinpätkä näyttää kuinka spy()-menetelmää käytetään.

 List spyArrayList = spy(ArrayList.class); 

Ero Stubin ja Mockin välillä

Parametrit Tynkä Pilkata
Tietolähde Stubtien tietolähde on kovakoodattu. Se on yleensä tiukasti kytketty testisarjaan. Testien avulla luodaan tiedot pilkoista.
Luonut Tyngät on yleensä kirjoitettu käsin, ja osa niistä on luotu työkaluilla. Pilkat luodaan yleensä käyttämällä kolmannen osapuolen kirjastoa, kuten Mockito, JMock ja WireMock.
Käyttö Stubeja käytetään pääasiassa yksinkertaisissa testisarjoissa. Mockeja käytetään pääasiassa suurissa testisarjoissa.
Graafinen käyttöliittymä (GUI) Stubilla ei ole graafista käyttöliittymää. Mockeissa on graafinen käyttöliittymä.

Seuraavassa on joitain eroja pilan ja vakoojan välillä:

Parametrit Pilkata Vakooja
Käyttö Pilkkaa käytetään täysin pilkattujen tai valeobjektien luomiseen. Sitä käytetään pääasiassa suurissa testisarjoissa. Vakoilijoita käytetään osittaisten tai puoliksi pilkattujen esineiden luomiseen. Kuten pilkkaa, vakoojia käytetään myös suurissa testisarjoissa.
Oletuskäyttäytyminen Kun käytät valeobjekteja, menetelmien oletuskäyttäytyminen (kun ei ole stub-tilassa) on Älä tee mitään (ei suorita mitään.) Vakoiluobjekteja käytettäessä menetelmien oletuskäyttäytyminen (jos ei ole stubed) on todellinen menetelmän käyttäytyminen.

Aiemmissa opetusohjelmissamme olemme keskustelleet joistakin esimerkeistä tyrkyttämisestä, pilkkaamisesta ja vakoilusta. Ymmärtääksesi paremmin eron tynkän, pilkkaamisen ja vakoilun välillä, käy läpi esimerkit.