Podrugljivo bacanje izuzetaka pomoću Mockita

1. Pregled

U ovom brzom vodiču - usredotočit ćemo se na to kako konfigurirati poziv metode kako bi se dodala iznimka s Mockitom.

Za više informacija o knjižnici pogledajte i našu Mockito seriju.

Evo jednostavne klase rječnika koju ćemo koristiti u ovim primjerima:

klasa MyDictionary {privatna karta wordMap = new HashMap (); javna praznina dodaj (Riječ u nizu, značenje niza) {wordMap.put (riječ, značenje); } javni String getMeaning (niz riječi) {return wordMap.get (riječ); }}

2. Ne-Poništiti Tip povrata

Prvo, ako naša metoda povratne vrste nije poništiti možemo koristiti when (). thenThrow ():

@Test (očekuje se = NullPointerException.class) javna praznina kadaConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = lažno (MyDictionary.class); kada (dictMock.getMeaning (anyString ())). thenThrow (NullPointerException.class); dictMock.getMeaning ("riječ"); } 

Obavijest, konfigurirali smo getMeaning () metoda - koja vraća vrijednost tipa Niz - baciti a NullPointerException kad je pozvan.

3. Poništiti Tip povrata

Ako se naša metoda vrati poništiti, koristit ćemo doThrow ():

@Test (očekuje se = IllegalStateException.class) javna praznina kadaConfigVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dictMock = lažna (MyDictionary.class); doThrow (IllegalStateException.class) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("riječ", "značenje"); }

Ovdje smo konfigurirali dodati() metoda - koja se vraća poništiti - baciti IllegalStateException kad je pozvan.

Ne možemo koristiti when (). thenThrow () s poništiti tip povratka jer kompajler ne dopušta poništiti metode unutar zagrada.

4. Iznimka kao objekt

O konfiguriranju same iznimke, možemo proslijediti klasu iznimke kao u našim prethodnim primjerima ili kao objekt:

@Test (očekuje se = NullPointerException.class) javna praznina kadaConfigNonVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = lažno (MyDictionary.class); kada (dictMock.getMeaning (anyString ())). thenThrow (novi NullPointerException ("Dogodila se pogreška")); dictMock.getMeaning ("riječ"); }

A možemo i s doThrow () također:

@Test (očekuje se = IllegalStateException.class) javna praznina kadaConfigVoidRetunMethodToThrowExWithNewExObj_thenExIsThrown () {MyDictionary dictMock = lažna (MyDictionary.class); doThrow (novi IllegalStateException ("Dogodila se pogreška")) .when (dictMock) .add (anyString (), anyString ()); dictMock.add ("riječ", "značenje"); }

5. Špijun

Također možemo konfigurirati Špijun da izbacimo izuzetak na isti način kao što smo to učinili s lažnim:

@Test (očekuje se = NullPointerException.class) javna praznina givenSpy_whenConfigNonVoidRetunMethodToThrowEx_thenExIsThrown () {MyDictionary dict = new MyDictionary (); MyDictionary špijun = Mockito.spy (dict); when (spy.getMeaning (anyString ())). thenThrow (NullPointerException.class); spy.getMeaning ("riječ"); }

6. Zaključak

U ovom smo članku istražili kako konfigurirati pozive metoda za dodavanje iznimke u Mockito.

Kao i uvijek, puni izvorni kod možete pronaći na GitHubu.


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