logo

Mock vs. Stub vs. Spy

Mock

Mocks so objekti, ki shranjujejo klice metod. Imenovali so se dinamični ovoji za odvisnosti, uporabljene v testih. Uporablja se za beleženje in preverjanje interakcije med razredi Java. Mock je znan kot najmočnejša in najprilagodljivejša različica testnih dvojnikov. Za norčevanje uporabljamo metodo, ki se imenuje posmeh() .

Glavna funkcija uporabe posmehov je, da daje popoln nadzor nad vedenjem posmehovanih predmetov. Lažni predmeti se običajno uporabljajo za preverjanje obnašanja . Izraz vedenje pomeni preverjanje pravilnih metod in poti, ki se uporabljajo za objekte.

Posnetki so večinoma ustvarjeni z uporabo knjižnice ali posmehljivega ogrodja, kot so Mockito, JMock in EasyMock. Uporablja se za testiranje velikega nabora testov, kjer škrbine ne zadostujejo. Ena bistvenih funkcij mocka je, da lahko preverimo, kolikokrat je določena metoda klicana.

Naslednji delček kode prikazuje, kako uporabljati mock().

 ToDoService doService = mock(ToDoService.class); 

škrbina

Škarbine so objekti, ki vsebujejo vnaprej določene podatke in jih uporabljajo za dajanje odgovorov med preizkusi. Z drugimi besedami, škrbina je objekt, ki je podoben pravemu objektu z minimalnim številom metod, potrebnih za preizkus. Zareze uporabljamo takrat, ko ne želimo uporabljati objektov, ki bi dajali odgovor z realnimi podatki. Škrbina se imenuje najlažja, najbolj statična različica testa pa je dvojna.

Glavne funkcije škrbin so:

  • Vedno vrne vnaprej določen izhod ne glede na vhod.
  • Uporablja se lahko za podobnost objektom baze podatkov.
  • Čepi se uporabljajo za zmanjšanje zapletenosti, ki se pojavi med ustvarjanjem resničnih predmetov. Uporabljajo se predvsem za nastopanje državno preverjanje .

Vohun

Vohuni so znani kot delno posnemanje predmetov . To pomeni, da vohun ustvari delni predmet ali polovico lutke pravega predmeta tako, da zatakne ali vohuni prave predmete. Pri vohunjenju resnični predmet ostane nespremenjen, vohunimo pa samo nekatere posebne metode. Z drugimi besedami, vzamemo obstoječi (pravi) objekt in zamenjati oz vohun le nekatere njegove metode.

Vohuni so uporabni, ko imamo ogromen razred, poln metod, in se želimo posmehovati določenim metodam. V tem scenariju bi raje uporabljali vohune kot pa posmehe in škrbine. Pokliče dejansko vedenje metode, če metode niso narezane.

V Mockitu se metoda spy() uporablja za ustvarjanje vohunskih objektov. Omogoča nam, da pokličemo običajne metode realnega objekta. Naslednji delček kode prikazuje, kako uporabljati metodo spy().

 List spyArrayList = spy(ArrayList.class); 

Razlika med Stubom in Mockom

Parametri škrbina Mock
Vir podatkov Podatkovni vir škrbin je trdo kodiran. Običajno je tesno povezan s testno zbirko. Podatki o mockih so nastavljeni s testi.
Ustvaril Karbine so običajno ročno napisane, nekatere pa so ustvarjene z orodji. Mocks so običajno ustvarjeni z uporabo knjižnice tretjih oseb, kot so Mockito, JMock in WireMock.
Uporaba Čepi se večinoma uporabljajo za preproste testne pakete. Mocks se večinoma uporabljajo za velike testne zbirke.
Grafični uporabniški vmesnik (GUI) Stubs nimajo GUI. Mocks imajo GUI.

Sledi nekaj razlik med lažnim in vohunskim:

format niza
Parametri Mock Vohun
Uporaba Mocks se uporabljajo za ustvarjanje popolnoma lažnih ali navideznih predmetov. Uporablja se predvsem v velikih testnih zbirkah. Vohuni se uporabljajo za ustvarjanje delnih ali napol lažnih predmetov. Tako kot lažni se vohuni uporabljajo tudi v velikih testnih paketih.
Privzeto vedenje Pri uporabi navideznih objektov je privzeto vedenje metod (če niso zataknjene) ne naredi nič (ne izvaja ničesar.) Ko uporabljate vohunske objekte, je privzeto vedenje metod (če niso zataknjene) dejansko vedenje metode.

V naših prejšnjih vadnicah smo obravnavali nekaj primerov zabadanja, norčevanja in vohunjenja. Če želite bolje razumeti razliko med nabijanjem, norčevanjem in vohunjenjem, preglejte primere.