Spottende uitzondering Throwing met behulp van Mockito

1. Overzicht

In deze korte tutorial zullen we ons concentreren op het configureren van een methodeaanroep om een ​​uitzondering te genereren met Mockito.

Bekijk ook onze Mockito-serie voor meer informatie over de bibliotheek.

Hier is een eenvoudige woordenboekklasse die we in deze voorbeelden zullen gebruiken:

class MyDictionary {private Map wordMap = new HashMap (); public void add (String woord, String betekenis) {wordMap.put (woord, betekenis); } public String getMeaning (String word) {return wordMap.get (word); }}

2. Niet-Ongeldig Retourtype

Ten eerste, als het retourtype van onze methode dat niet is leegte we kunnen gebruiken wanneer (). thenThrow ():

@Test (verwacht = NullPointerException.class) openbare leegte whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); when (dictMock.getMeaning (anyString ())) .thenThrow (NullPointerException.class); dictMock.getMeaning ("woord"); } 

Let op, we hebben het getMeaning () methode - die een waarde van type retourneert Draad - om een NullPointerException wanneer gebeld.

3. Ongeldig Retourtype

Nu, als onze methode terugkeert leegte, we zullen gebruiken doThrow ():

@Test (verwacht = IllegalStateException.class) openbare leegte whenConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("woord", "betekenis"); }

Hier hebben we een toevoegen() methode - die terugkeert leegte - gooien IllegalStateException wanneer gebeld.

We kunnen niet gebruiken wanneer (). thenThrow () met leegte retourneer type zoals de compiler dit niet toestaat leegte methoden tussen haakjes.

4. Uitzondering als object

Over het configureren van de uitzondering zelf, kunnen we de klasse van de uitzondering doorgeven zoals in onze vorige voorbeelden of als een object:

@Test (verwacht = NullPointerException.class) openbare leegte whenConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); when (dictMock.getMeaning (anyString ())) .thenThrow (nieuwe NullPointerException ("Fout opgetreden")); dictMock.getMeaning ("woord"); }

En we kunnen hetzelfde doen met doThrow () ook:

@Test (verwacht = IllegalStateException.class) openbare leegte whenConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (nieuwe IllegalStateException ("Fout opgetreden")) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("woord", "betekenis"); }

5. Spion

We kunnen ook configureren Spion om een ​​uitzondering te maken op dezelfde manier als we deden met de mock:

@Test (verwacht = NullPointerException.class) openbare leegte gegevenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary-spion = Mockito.spy (dict); wanneer (spy.getMeaning (anyString ())) .thenThrow (NullPointerException.class); spy.getMeaning ("woord"); }

6. Conclusie

In dit artikel hebben we onderzocht hoe methodeaanroepen kunnen worden geconfigureerd om een ​​uitzondering in Mockito te genereren.

Zoals altijd is de volledige broncode te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found