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.