logo

Mock vs Stub vs Spiegs

Izsmiet

Izspēles ir objekti, kas glabā metožu izsaukumus. To sauca par testos izmantoto atkarību dinamiskajiem aptinumiem. To izmanto, lai reģistrētu un pārbaudītu mijiedarbību starp Java klasēm. Izspēles ir pazīstama kā jaudīgākā un elastīgākā testa dubultspēlē. Mēs izmantojam metodi ņirgāšanās sauc izsmiet () .

Izsmieklu izmantošanas galvenā funkcija ir tā, ka tā nodrošina pilnīgu kontroli pār izsmieto objektu uzvedību. Izspēles objektus parasti izmanto uzvedības pārbaude . Termins uzvedība nozīmē pārbaudīt objektiem piemērotās pareizās metodes un ceļus.

Izspēles galvenokārt tiek veidotas, izmantojot bibliotēku vai izsmieklu sistēmu, piemēram, Mockito, JMock un EasyMock. To izmanto, lai pārbaudītu lielu pārbaužu komplektu, kur nepietiek ar nepilnībām. Viena no būtiskām izspēles funkcijām ir, mēs varam pārbaudīt, cik reižu tiek izsaukta dotā metode.

tīkla arhitektūra

Šis koda fragments parāda, kā izmantot mock().

 ToDoService doService = mock(ToDoService.class); 

Stub

Stubs ir objekti, kas satur iepriekš definētus datus un izmanto tos, lai sniegtu atbildes testu laikā. Citiem vārdiem sakot, stubs ir objekts, kas līdzinās reālam objektam ar minimālo testēšanai nepieciešamo metožu skaitu. Stubs tiek izmantots, ja mēs nevēlamies izmantot objektus, kas sniegtu atbildi ar reāliem datiem. Stubs tiek saukts par vieglāko, un statiskākā testa versija ir dubultā.

Stublu galvenās funkcijas ir:

  • Tas vienmēr atgriež iepriekš definēto izvadi neatkarīgi no ievades.
  • To var izmantot, lai līdzinātos datu bāzes objektiem.
  • Stubs tiek izmantoti, lai samazinātu sarežģījumus, kas rodas reālu objektu izveides laikā. Tos galvenokārt izmanto priekšnesumam valsts pārbaude .

Spiegs

Spiegi ir pazīstami kā daļēji izsmiet objektus . Tas nozīmē, ka spiegs izveido daļēju objektu vai pusi manekena no īstā objekta, nospiežot vai izspiegot īstos objektus. Spiegošanā īstais objekts paliek nemainīgs, un mēs tikai izspiegojam dažas specifiskas tā metodes. Citiem vārdiem sakot, mēs ņemam esošo (reālo) objektu un aizvietot vai spiegs tikai dažas no tās metodēm.

Spiegi ir noderīgi, ja mums ir milzīga metožu klase, un mēs vēlamies izsmiet noteiktas metodes. Šajā scenārijā mums vajadzētu dot priekšroku spiegu izmantošanai, nevis izsmiekliem un stulbiem. Tas izsauc reālo metodes uzvedību, ja metodes nav traucētas.

Programmā Mockito spiegu objektu izveidei tiek izmantota spy() metode. Tas ļauj mums izsaukt reālā objekta parastās metodes. Šis koda fragments parāda, kā izmantot spy() metodi.

 List spyArrayList = spy(ArrayList.class); 

Atšķirība starp Stub un Mock

Parametri Stub Izsmiet
Datu avots Stublu datu avots ir kodēts. Tas parasti ir cieši savienots ar testa komplektu. Dati par izspēles tiek iestatīti ar testiem.
Radīts Stubs parasti ir rakstīts ar roku, un daži ir ģenerēti ar rīkiem. Izspēles parasti tiek veidotas, izmantojot trešās puses bibliotēku, piemēram, Mockito, JMock un WireMock.
Lietošana Stubs galvenokārt tiek izmantotas vienkāršām testa komplektiem. Izspēles galvenokārt tiek izmantotas lielām testa komplektiem.
Grafiskais lietotāja interfeiss (GUI) Stubiem nav GUI. Mocks ir GUI.

Tālāk ir norādītas dažas atšķirības starp izspēles un spiegu:

Parametri Izsmiet Spiegs
Lietošana Izspēles tiek izmantotas, lai izveidotu pilnībā izspēles vai fiktīvus objektus. To galvenokārt izmanto lielos testa komplektos. Spiegus izmanto, lai izveidotu daļējus vai daļēji izspēles objektus. Tāpat kā izspēles, spiegus izmanto arī lielajos testa komplektos.
Noklusējuma uzvedība Lietojot viltotus objektus, metožu noklusējuma darbība (kad tās nav izspiestas) ir nedarīt neko (neko neveic). Lietojot spiegu objektus, metožu noklusējuma darbība (ja tā nav izspiesta) ir reālā metodes darbība.

Iepriekšējās apmācībās mēs esam apsprieduši dažus stulbināšanas, ņirgāšanās un spiegošanas piemērus. Lai labāk izprastu atšķirību starp stulbināšanu, ņirgāšanos un spiegošanu, skatiet piemērus.