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.