Spottende unntak Kasting med Mockito

1. Oversikt

I denne raske opplæringen - fokuserer vi på hvordan du konfigurerer et metodeanrop for å kaste et unntak med Mockito.

For mer informasjon om biblioteket, sjekk også Mockito-serien vår.

Her er en enkel ordboksklasse vi bruker i disse eksemplene:

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

2. Ikke-Tomrom Returtype

For det første, hvis vår returtype ikke er tomrom Vi kan bruke når (). deretter Kast ():

@Test (forventet = NullPointerException.class) offentlig ugyldig nårConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); når (dictMock.getMeaning (anyString ())) .thenThrow (NullPointerException.class); dictMock.getMeaning ("ord"); } 

Legg merke til at vi konfigurerte getMeaning () metode - som returnerer en verdi av typen String - å kaste en NullPointerException når du blir ringt.

3. Tomrom Returtype

Nå, hvis metoden vår kommer tilbake tomrom, vi bruker doTrow ():

@Test (forventet = IllegalStateException.class) offentlig ugyldig nårConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("word", "meaning"); }

Her konfigurerte vi en legge til() metode - som returnerer tomrom - å kaste IllegalStateException når du blir ringt.

Vi kan ikke bruke når (). deretter Kast () med tomrom returtype slik kompilatoren ikke tillater det tomrom metoder i parentes.

4. Unntak som objekt

Om å konfigurere unntaket i seg selv, kan vi passere unntakets klasse som i våre tidligere eksempler eller som et objekt:

@Test (forventet = NullPointerException.class) offentlig ugyldig nårConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); når (dictMock.getMeaning (anyString ())) .thenThrow (ny NullPointerException ("Feil oppstod")); dictMock.getMeaning ("ord"); }

Og vi kan gjøre det samme med doTrow () også:

@Test (forventet = IllegalStateException.class) offentlig ugyldig nårConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = mock (MyDictionary.class); doThrow (ny IllegalStateException ("Feil oppstod")). når (dictMock) .add (anyString (), anyString ()); dictMock.add ("word", "meaning"); }

5. Spion

Vi kan også konfigurere Spion å kaste et unntak på samme måte som vi gjorde med spotten:

@Test (forventet = NullPointerException.class) offentlig ugyldig givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary spion = Mockito.spy (dict); når (spy.getMeaning (anyString ())) .thenTrow (NullPointerException.class); spy.getMeaning ("ord"); }

6. Konklusjon

I denne artikkelen undersøkte vi hvordan du konfigurerer metodeanrop for å kaste et unntak i Mockito.

Som alltid kan hele kildekoden finnes på GitHub.


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