logo

Lagana vs. Stub vs. Spy

Oponašanje

Mocks su objekti koji pohranjuju pozive metoda. Naziva se dinamičkim omotačima za ovisnosti korištene u testovima. Koristi se za snimanje i provjeru interakcije između Java klasa. Mock je poznat kao najmoćnija i najfleksibilnija verzija testnih parova. Koristimo metodu za ismijavanje tzv oponašanje() .

bourne again školjka

Glavna funkcija korištenja ismijavanja je da daje potpunu kontrolu nad ponašanjem ismijanih objekata. Općenito se koriste lažni objekti provjera ponašanja . Izraz ponašanje znači provjeriti ispravne metode i staze koje se primjenjuju na objekte.

Mocks se uglavnom stvaraju korištenjem biblioteke ili okvira za ismijavanje kao što su Mockito, JMock i EasyMock. Koristi se za testiranje velikog paketa testova gdje nisu dovoljni dodaci. Jedna od bitnih funkcija mock-a je da možemo provjeriti koliko je puta određena metoda pozvana.

Sljedeći isječak koda pokazuje kako koristiti mock().

 ToDoService doService = mock(ToDoService.class); 

Stub

Stubovi su objekti koji sadrže unaprijed definirane podatke i koriste ih za davanje odgovora tijekom testova. Drugim riječima, stub je objekt koji nalikuje stvarnom objektu s minimalnim brojem metoda potrebnih za testiranje. Stubovi se koriste kada ne želimo koristiti objekte koji bi dali odgovor sa stvarnim podacima. Stub se naziva najlakšim, a najstatičnija verzija testa duplira.

Glavne funkcije čepova su:

  • Uvijek vraća unaprijed definirani izlaz bez obzira na ulaz.
  • Može se koristiti da nalikuje objektima baze podataka.
  • Stubovi se koriste za smanjenje složenosti koje se javljaju tijekom stvaranja stvarnih objekata. Uglavnom se koriste za izvođenje provjera stanja .

Špijun

Špijuni su poznati kao djelomično ismijavati predmete . To znači da špijun stvara djelomični objekt ili polovicu lutke pravog objekta tako što zabija ili špijunira stvarne objekte. U špijuniranju stvarni objekt ostaje nepromijenjen, a mi samo špijuniramo neke njegove specifične metode. Drugim riječima, uzimamo postojeći (pravi) objekt i zamijeniti ili špijun samo neke od njegovih metoda.

Špijuni su korisni kada imamo ogromnu klasu punu metoda, a želimo ismijavati određene metode. U ovom scenariju, trebali bismo radije koristiti špijune nego rugalice i zaglavke. Poziva stvarno ponašanje metode, ako metode nisu zaglavljene.

U Mockitu se metoda spy() koristi za stvaranje špijunskih objekata. Omogućuje nam pozivanje normalnih metoda stvarnog objekta. Sljedeći isječak koda pokazuje kako koristiti metodu spy().

 List spyArrayList = spy(ArrayList.class); 

Razlika između Stuba i Mocka

Parametri Stub Oponašanje
Izvor podataka Izvor podataka stubova je tvrdo kodiran. Obično je usko povezan sa skupom testova. Podaci o mockovima postavljaju se testovima.
Napravio Završeci su obično pisani rukom, a neki su generirani pomoću alata. Mocks se obično stvaraju korištenjem biblioteke treće strane kao što su Mockito, JMock i WireMock.
Korištenje Stubovi se uglavnom koriste za jednostavne pakete testova. Mocks se uglavnom koriste za velike pakete testova.
Grafičko korisničko sučelje (GUI) Stubovi nemaju GUI. Mocks ima GUI.

Slijede neke razlike između lažnog i špijunskog:

Parametri Oponašanje Špijun
Korištenje Mocks se koriste za stvaranje potpuno lažnih ili lažnih objekata. Uglavnom se koristi u velikim paketima testova. Špijuni se koriste za stvaranje djelomičnih ili polu lažnih objekata. Kao lažni, špijuni se također koriste u velikim paketima testova.
Zadano ponašanje Kada koristite lažne objekte, zadano ponašanje metoda (kada nisu zaglavljene) je ne radi ništa (ne izvodi ništa.) Kada koristite špijunske objekte, zadano ponašanje metoda (kada nisu zaglavljene) je stvarno ponašanje metode.

U našim prethodnim tutorijalima raspravljali smo o nekim primjerima zabadanja, ruganja i špijuniranja. Da biste bolje razumjeli razliku između podbadanja, ruganja i špijuniranja, prođite kroz primjere.