Gúnyos kivétel dobása Mockito segítségével
1. Áttekintés
Ebben a gyors bemutatóban arra fogunk összpontosítani, hogy miként állítsunk be egy metódushívást a Mockitóval való kivétel érdekében.
A könyvtárral kapcsolatos további információkért tekintse meg a Mockito sorozatunkat is.
Íme egy egyszerű szótárosztály, amelyet a következő példákban használunk:
osztály Saját szótár {privát térkép wordMap = új HashMap (); public void add (karakterlánc szó, karakterlánc jelentése) {wordMap.put (szó, jelentés); } public String getMeaning (karakterlánc szó) {return wordMap.get (szó); }}
2. NemÜres Return Type
Először is, ha a módszerünk visszatérési típusa nem üres tudjuk használni mikor (). akkor dobja ():
@Test (várható = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = gúny (MyDictionary.class); mikor (dictMock.getMeaning (anyString ())) .thenThrow (NullPointerException.class); dictMock.getMeaning ("szó"); }
Figyelem, konfiguráltuk a getMeaning () method - amely egy típusú értéket ad vissza Húr - dobni a NullPointerException amikor felhívják.
3. Üres Return Type
Ha a módszerünk visszatér üres, használjuk doThrow ():
@Test (várható = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = gúny (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("szó", "jelentése"); }
Itt konfiguráltunk egy add () módszer - amely visszatér üres - dobni IllegalStateException amikor felhívják.
Nem használhatjuk mikor (). akkor dobja () val vel üres return típus, mivel a fordító nem engedélyezi üres zárójelben lévő módszerek.
4. Kivétel tárgyként
Magának a kivételnek a konfigurálásával átadhatjuk a kivétel osztályát, mint az előző példáinkban vagy objektumként:
@Test (várható = NullPointerException.class) public void whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = gúny (MyDictionary.class); mikor (dictMock.getMeaning (anyString ())) .thenThrow (új NullPointerException ("Hiba történt")); dictMock.getMeaning ("szó"); }
És ugyanezt megtehetjük doThrow () is:
@Test (várható = IllegalStateException.class) public void whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = gúny (MyDictionary.class); doThrow (új IllegalStateException ("Hiba történt")) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("szó", "jelentése"); }
5. Kém
Konfigurálhatunk is Kém kivételt vetni ugyanúgy, mint a gúnnyal:
@Test (várható = NullPointerException.class) public void givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary kém = Mockito.spy (dict); mikor (spy.getMeaning (anyString ())) .thenThrow (NullPointerException.class); spy.getMeaning ("szó"); }
6. Következtetés
Ebben a cikkben azt kutattuk, hogyan lehet konfigurálni a metódushívásokat, hogy kivételt hajtsunk végre a Mockitóban.
Mint mindig, a teljes forráskód megtalálható a GitHubon.