Mock
A mockok azok az objektumok, amelyek metódushívásokat tárolnak. A tesztekben használt függőségek dinamikus burkolóinak nevezik. A Java osztályok közötti interakció rögzítésére és ellenőrzésére szolgál. A modell a tesztpáros legerősebb és legrugalmasabb változataként ismert. A gúnyolódás módszerét használjuk ún gúny() .
A gúnyolatok használatának fő funkciója, hogy teljes ellenőrzést ad a gúnyolt objektumok viselkedése felett. Az álobjektumokat általában arra használják viselkedés ellenőrzése . A viselkedés kifejezés az objektumokra alkalmazott helyes metódusok és útvonalak ellenőrzését jelenti.
A mockok többnyire könyvtár vagy gúnyos keretrendszer, például Mockito, JMock és EasyMock használatával jönnek létre. Számos tesztcsomag tesztelésére szolgál, ahol a csonkok nem elegendőek. A mock egyik lényeges funkciója, hogy ellenőrizni tudjuk, hányszor hívják meg az adott metódust.
A következő kódrészlet bemutatja, hogyan kell használni a mock().
ToDoService doService = mock(ToDoService.class);
Stub
A csonkok azok az objektumok, amelyek előre meghatározott adatokat tartalmaznak, és a tesztek során válaszadásra használják őket. Más szavakkal, a csonk egy olyan objektum, amely a teszthez szükséges minimális számú módszerrel hasonlít egy valódi objektumra. A csonkokat akkor használjuk, ha nem akarunk olyan objektumokat használni, amelyek valós adatokkal adnának választ. A csonkot a legkönnyebbnek nevezik, a teszt legstatikusabb változata pedig kettős.
A csonkok fő funkciói a következők:
- Mindig az előre meghatározott kimenetet adja vissza, függetlenül a bemenettől.
- Használható arra, hogy hasonlítson az adatbázis-objektumokra.
- A csonkokat a valódi objektumok létrehozása során fellépő bonyolultságok csökkentésére használják. Főleg előadásra használják állapotellenőrzés .
Kém
A kémeket úgy ismerik részben kigúnyolja a tárgyakat . Ez azt jelenti, hogy a kém a valódi objektum egy részleges tárgyát vagy egy fél bábuját hoz létre úgy, hogy elnyomja vagy kikémli az igazit. A kémkedés során a valódi tárgy változatlan marad, és csak bizonyos módszereket kémkedünk. Vagyis vesszük a létező (valódi) tárgyat és cserélje ki vagy kém csak néhány módszere.
A kémek akkor hasznosak, ha egy hatalmas osztályunk van tele módszerekkel, és ki akarunk gúnyolni bizonyos módszereket. Ebben a forgatókönyvben előnyben részesítjük a kémek használatát a gúnyok és csonkok helyett. A valódi metódus viselkedését hívja, ha a metódusok nincsenek csonkolva.
A Mockitoban a spy() metódust használják kémobjektumok létrehozására. Lehetővé teszi, hogy meghívjuk a valós objektum normál metódusait. A következő kódrészlet a spy() metódus használatát mutatja be.
List spyArrayList = spy(ArrayList.class);
Különbség Stub és Mock között
Paraméterek | Stub | Mock |
---|---|---|
Adatforrás | A csonkok adatforrása keménykódolt. Általában szorosan kapcsolódik a tesztkészlethez. | A gúnyok adatait a tesztek állítják fel. |
Készítette | A csonkokat általában kézzel írják, és néhányat eszközök generálnak. | A mockok általában harmadik féltől származó könyvtárak, például Mockito, JMock és WireMock használatával jönnek létre. |
Használat | A csonkokat főként egyszerű tesztkészletekhez használják. | A mockokat főleg nagy tesztkészletekhez használják. |
Grafikus felhasználói felület (GUI) | A csonkok nem rendelkeznek grafikus felhasználói felülettel. | A gúnyok grafikus felhasználói felülettel rendelkeznek. |
Íme néhány különbség a gúny és a kém között:
Paraméterek | Mock | Kém |
---|---|---|
Használat | A gúnyok teljesen ál- vagy álobjektumok létrehozására szolgálnak. Főleg nagy tesztkészletekben használják. | A kémeket részleges vagy félig álobjektumok létrehozására használják. Mint a gúny, a kémeket a nagy tesztkészletekben is használják. |
Alapértelmezett viselkedés | Mock objektumok használatakor a metódusok alapértelmezett viselkedése (ha nem csonkolva) a semmittevés (nem hajt végre semmit.) | Kémobjektumok használatakor a metódusok alapértelmezett viselkedése (ha nem csonkolva) a valódi metódus viselkedése. |
Korábbi oktatóanyagainkban megvitattunk néhány példát a csonkításra, gúnyolásra és kémkedésre. Ha jobban szeretné megérteni a különbséget a csonkítás, a gúnyolás és a kémkedés között, nézze meg a példákat.