Állítson be egy kivételt a 4. és 5. JUnit-ben

1. Bemutatkozás

Ebben a gyors bemutatóban megvizsgáljuk, hogyan lehet tesztelni, hogy a JUnit könyvtár segítségével kivételt hoztunk-e.

Természetesen ügyelni kell a JUnit 4 és a JUnit 5 verziókra egyaránt.

2. JUnit 5

JUnit 5 A Jupiter assertions API bevezeti a assertThrows módszer a kivételek érvényesítésére.

Ehhez a várható kivétel típusa és egy Végrehajtható funkcionális interfész, ahol lambda kifejezésen keresztül továbbíthatjuk a tesztelt kódot:

@Test public void whenExceptionThrown_thenAssertionSucceeds () {Kivétel kivétel = assertThrows (NumberFormatException.class, () -> {Integer.parseInt ("1a");}); String várhatóMessage = "A bemeneti karakterlánchoz"; String actualMessage = kivétel.getMessage (); assertTrue (ténylegesMessage.contains (várhatóMessage)); }

Ha a várt kivétel eldobásra kerül,assertThrows visszaadja a kivételt, amely lehetővé teszi számunkra, hogy állítsunk is az üzenetről.

Ezenkívül fontos megjegyezni ez az állítás akkor teljesül, ha a mellékelt kód kivételt hoz a típusból NullPointerException vagy annak bármely származtatott típusa.

Ez azt jelenti, hogy ha elhaladunk Kivétel a várható kivétel típusaként minden dobott kivétel sikeres lesz az állítás óta Kivétel a szupertípus minden kivétel esetén.

Ha megváltoztatjuk a fenti tesztet, hogy a RuntimeException, ez is elmúlik:

@Test public void whenDerivedExceptionThrown_thenAssertionSucceds () {Kivétel kivétel = assertThrows (RuntimeException.class, () -> {Integer.parseInt ("1a");}); String várhatóMessage = "A bemeneti karakterlánchoz"; String actualMessage = kivétel.getMessage (); assertTrue (ténylegesMessage.contains (várhatóMessage)); }

A assertThrows () A módszer lehetővé teszi a kivonat-állítási logika finomabb ellenőrzését, mert használhatjuka kód egyes részei körül.

3. JUnit 4

A JUnit 4 használatakor egyszerűen megtehetjük használja a várt attribútuma @Teszt annotáció kijelenteni, hogy elvárjuk, hogy kivétel lépjen bárhová az annotált vizsgálati módszerben.

Ennek eredményeként a teszt futtatásakor sikertelen lesz, ha a megadott kivételt nem dobják el, és akkor felel meg, ha dobják:

@Test (várható = NullPointerException.class) public void whenExceptionThrown_thenExpectationSatisfied () {String test = null; teszt.hossz (); }

Ebben a példában kijelentettük, hogy arra számítunk, hogy tesztkódunk a-t eredményez NullPointerException.

Ez elég, ha csak azt állítjuk, hogy kivétel van.

Amikor ellenőriznünk kell a kivétel néhány egyéb tulajdonságát, használhatjuk a ExpectedException szabály.

Lássunk egy példát a üzenet kivétel tulajdonsága:

@Rule public ExpectedException KivételRule = ExpectedException.none (); @Test public void whenExceptionThrown_thenRuleIsApplied () {kivételRule.expect (NumberFormatException.class); kivételRule.expectMessage ("For input string"); Integer.parseInt ("1a"); }

A fenti példában először deklaráljuk a ExpectedException szabály. Ezután tesztünk során azt állítjuk, hogy az a kód, amely megpróbálja elemezni az Egész szám érték a NumberFormatException az “For input string” üzenettel.

4. Következtetés

Ebben a cikkben a kivételeket állítottuk mind a 4., mind az 5. JUnittel.

A példák teljes forráskódja elérhető a GitHub oldalon.