Pasityčiojimas
Mocks yra objektai, kuriuose saugomi metodų iškvietimai. Jis vadinamas dinaminiais testuose naudojamų priklausomybių įvyniokliais. Jis naudojamas įrašyti ir patikrinti „Java“ klasių sąveiką. Maketas yra žinomas kaip galingiausia ir lanksčiausia bandomųjų dublių versija. Mes naudojame tyčiojantis metodas vadinamas pasityčioti () .
Pagrindinė pašaipų naudojimo funkcija yra ta, kad ji leidžia visiškai kontroliuoti objektų, iš kurių tyčiojamasi, elgesį. Apgaulingi objektai paprastai naudojami elgesio patikrinimas . Terminas elgesys reiškia objektams taikomų teisingų metodų ir kelių patikrinimą.
Mockai dažniausiai kuriami naudojant biblioteką arba juokingą sistemą, pvz., Mockito, JMock ir EasyMock. Jis naudojamas dideliam testų rinkiniui išbandyti, kai neužtenka stuburo. Viena iš esminių mock funkcijų yra tai, kad galime patikrinti, kiek kartų iškviečiamas tam tikras metodas.
skaičiai abėcėlėje
Šis kodo fragmentas parodo, kaip naudoti mock().
mygtukas centre css
ToDoService doService = mock(ToDoService.class);
Stub
Stubai yra objektai, kuriuose saugomi iš anksto nustatyti duomenys ir kurie naudojami atsakymams pateikti testų metu. Kitaip tariant, stuburas yra objektas, panašus į realų objektą su minimaliu bandymui reikalingų metodų skaičiumi. Stubai naudojami, kai nenorime naudoti objektų, kurie atsakytų realiais duomenimis. Stubas vadinamas lengviausiu, o statiškiausia bandymo versija – dviguba.
Pagrindinės stuburo funkcijos yra šios:
- Jis visada grąžina iš anksto nustatytą išvestį, nepaisant įvesties.
- Jis gali būti naudojamas priminti duomenų bazės objektus.
- Stubai naudojami siekiant sumažinti sudėtingumą, atsirandantį kuriant tikrus objektus. Jie daugiausia naudojami vaidinimui valstybinis patikrinimas .
Šnipas
Šnipai yra žinomi kaip iš dalies tyčiojasi iš daiktų . Tai reiškia, kad šnipas sukuria dalinį tikrojo objekto objektą arba pusę manekeno, užmušdamas ar šnipinėdamas tikrus objektus. Šnipinėjant tikrasis objektas lieka nepakitęs, o mes tiesiog šnipinėjame tam tikrus specifinius jo metodus. Kitaip tariant, imame esamą (realų) objektą ir pakeisti arba šnipas tik kai kurie jo metodai.
rėmo tkinteris
Šnipai naudingi, kai turime didžiulę metodų klasę ir norime pasityčioti iš tam tikrų metodų. Pagal šį scenarijų turėtume teikti pirmenybę šnipų naudojimui, o ne tyčiojimams ir šnipams. Tai vadina tikrąjį metodo elgesį, jei metodai nėra sugadinti.
Mockito programoje spy() metodas naudojamas šnipinėjimo objektams kurti. Tai leidžia mums vadinti įprastus realaus objekto metodus. Šis kodo fragmentas parodo, kaip naudoti spy() metodą.
List spyArrayList = spy(ArrayList.class);
Skirtumas tarp Stub ir Mock
Parametrai | Stub | Pasityčiojimas |
---|---|---|
Duomenų šaltinis | Stubų duomenų šaltinis yra užkoduotas. Paprastai jis yra glaudžiai sujungtas su bandymų rinkiniu. | Duomenys apie pasityčiojimus nustatomi atliekant testus. |
Sukurta | Stubai paprastai rašomi ranka, o kai kurie generuojami naudojant įrankius. | Maketai paprastai kuriami naudojant trečiųjų šalių biblioteką, pvz., Mockito, JMock ir WireMock. |
Naudojimas | Stubai dažniausiai naudojami paprastiems bandymų rinkiniams. | Mockai dažniausiai naudojami dideliems bandymų rinkiniams. |
Grafinė vartotojo sąsaja (GUI) | Stubs neturi GUI. | Mocks turi GUI. |
Toliau pateikiami kai kurie modelio ir šnipo skirtumai:
Parametrai | Pasityčiojimas | Šnipas |
---|---|---|
Naudojimas | Mocks yra naudojami siekiant sukurti visiškai netikrus arba netikrus objektus. Jis daugiausia naudojamas dideliuose bandymų rinkiniuose. | Šnipai naudojami kuriant dalinius arba pusiau padirbtus objektus. Kaip ir pasityčiojimas, šnipai taip pat naudojami dideliuose bandymų rinkiniuose. |
Numatytas elgesys | Kai naudojate netikrus objektus, numatytasis metodų elgesys (kai nėra užblokuotas) yra nieko nedaryti (nieko neatlieka). | Naudojant šnipinėjimo objektus, numatytasis metodų elgesys (kai jis nėra užblokuotas) yra tikrasis metodo elgesys. |
Ankstesnėse mokymo programose aptarėme kai kuriuos įkyrėjimo, tyčiojimosi ir šnipinėjimo pavyzdžius. Kad geriau suprastumėte skirtumą tarp įkyrėjimo, tyčiojimosi ir šnipinėjimo, peržiūrėkite pavyzdžius.