A hiba és a hiba közötti különbség a JUnit-ben
1. Bemutatkozás
Ebben az oktatóanyagban feltárjuk a hiba és a hiba közötti különbségeket a JUnit tesztekben.
Röviden: a kudarcok nem teljesített állítások, míg a hibák a rendellenes tesztfuttatás miatt következnek be.
2. Minta kód
Vegyünk egy nagyon leegyszerűsített példát, nevezetesen egy számológép osztályt, amelynek egyetlen módszere van a kettő felosztására kettős értékek:
public static double divideNumbers (kettős osztalék, kettős osztó) {if (osztó == 0) {új ArithmeticException dobása ("Osztás nullával!"); } visszatérő osztalék / osztó; }
Vegye figyelembe, hogy A Java valójában nem dob Számtani kivétel önmagában a kettős felosztás - visszatér végtelenség vagy NaN.
3. Példa kudarcra
Amikor egység teszteket ír a JUnittel, valószínűleg vannak olyan helyzetek, amikor a tesztek sikertelenek lesznek. Az egyik lehetőség az kódunk nem felel meg a teszt kritériumainak. Ez azt jelenti, hogy egy vagy több teszteset meghiúsul állítások nem teljesülnek.
A következő példában az állítás kudarcot vall, mert az osztás eredménye 2 és nem 15. Állításunk és a tényleges eredmény egyszerűen nem egyezik:
@Test void whenDivideNumbers_thenExpectWrongResult () {double result = SimpleCalculator.divideNumbers (6, 3); assertEquals (15, eredmény); }
4. Példa hiba
Egy másik lehetőség az, hogy van váratlan helyzet a teszt végrehajtása során, valószínűleg egy kivétel miatt; például az a elérése nulla hivatkozás felveti a RuntimeException.
Lássunk egy példát, ahol a teszt hibával megszakad, mert megpróbálunk nullával osztani, amelyet kifejezetten megvédünk azzal, hogy kivételt dobunk a számológép kódunkba:
@Test void whenDivideByZero_thenThrowsException () {SimpleCalculator.divideNumbers (10, 0); }
Most kijavíthatnánk ezt a tesztet azzal, hogy állításunk egyikeként egyszerűen kivesszük a kivételt.
@Test void whenDivideByZero_thenAssertException () {assertThrows (ArithmeticException.class, () -> SimpleCalculator.divideNumbers (10, 0)); }
Ezután, ha a kivételt elvetik, a teszt sikeres, de ha nem, akkor az újabb kudarc lenne.
5. Következtetés
A JUnit tesztek kudarca és hibája egyaránt nem kívánt helyzetet jelez, de szemantikájuk eltér. A hibák az érvénytelen teszt eredményét jelzik, a hibák váratlan teszt végrehajtást jeleznek.
Kérjük, olvassa el a GitHub példakódját is.