Á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.