A tesztek feltételes futtatása vagy figyelmen kívül hagyása a 4. JUnit-ben
1. Áttekintés
Képzeljük el, hogy van egy tesztünk az operációs rendszertől függő kódokhoz, és csak akkor futtatható, ha a tesztgépünk Linuxon fut. Ha bármely más operációs rendszeren fut, akkor azt akarjuk, hogy a teszt ne bukjon meg, hanem futás közben kerüljön figyelmen kívül.
Az első megközelítés lehet néhány módszer használata ha utasításokat ennek a feltételnek a használatához Rendszer osztály tulajdonságai. Ez természetesen működik, de a JUnit tisztább, elegánsabb módszerrel rendelkezik.
Ebben a rövid bemutatóban megnézzük hogyan tudjuk feltételesen futtatni vagy figyelmen kívül hagyni a 4-es JUnit tesztjeit a Feltételezni osztály.
2. A Feltételezni Osztály
Ez az osztály egy sor módszert kínál a feltételes tesztfuttatás támogatásához, bizonyos feltételek alapján. Tesztünk csak akkor fut, ha mindezek a feltételek teljesülnek. Ha nem, A JUnit csak átugorja a végrehajtását, és a tesztjelentésben sikeresnek fogja jelölni. Ez utóbbi a fő különbség a Állítsd osztály, amelyben egy meghibásodott állapot miatt a teszt as hiányában.
Fontos megjegyezni, hogy az a viselkedés, amelyet a Feltételezni osztály az alapértelmezett JUnit futó számára kizárólagos. Az egyéni futóknál a dolgok másképp alakulhatnak.
Végül ugyanúgy, mint a Állítsd, hívhatjuk a Feltételezni módszerek akár a @Előtt vagy @Óra előtt jegyzetekkel ellátott módszerek vagy a @Teszt maga a módszer.
Nézzük át most a Feltételezni osztály néhány példával. Tegyük fel, hogy a következő példák mindegyike getOsName () visszatér Linux.
2.1. Használata Feltételezzük, hogy
A Feltételezzük, hogy() módszer ellenőrzi, hogy az állam - ebben az esetben getOsName () - megfelel a beillesztett mérkőzés feltételeinek:
@Test public void whenAssumeThatAndOSIsLinux_thenRunTest () {assumeThat (getOsName (), is ("Linux")); assertEquals ("run", "RUN" .toLowerCase ()); }
Ebben a példában megnéztük, hogy getOsName () megegyezik Linux. Mint getOsName () visszatér Linux, a teszt lefut. Megjegyzés: a Hamcrest matcher módszert alkalmazzuk (T) mint az itteni páros.
2.2. Használata feltételezzük Igaz
Hasonlóképpen használhatjuk a feltételezzük Igaz () metódus egy olyan logikai kifejezés megadására, amelynek értékelnie kell igaz a teszt lefutása érdekében. Ha értékeli, hogy hamis, a tesztet figyelmen kívül hagyják:
privát logikai isExpectedOS (String osName) {return "Linux" .equals (osName); } @Test public void whenAssumeTrueAndOSIsLinux_thenRunTest () {assumeTrue (isExpectedOS (getOsName ())); assertEquals ("run", "RUN" .toLowerCase ()); }
Ebben az esetben, isExpectedOs () visszatér igaz. Ebből kifolyólag, aa teszt futtatásának feltételei teljesülnek, és a tesztet lefuttatják.
2.3. Használata feltételezzük hamis
Végül az ellenkezőjét is felhasználhatjuk assumeFalse () metódus egy olyan logikai kifejezés megadására, amelynek értékelnie kell hamis a teszt lefutása érdekében. Ha értékeli, hogy igaz, a tesztet figyelmen kívül hagyják:
@Test public void whenAssumeFalseAndOSIsLinux_thenIgnore () {assumeFalse (isExpectedOS (getOsName ())); assertEquals ("run", "RUN" .toLowerCase ()); }
Ebben az esetben as isExpectedOs () is visszatér igaz,aa teszt futtatásának feltételei nem teljesülnek, és a tesztet figyelmen kívül hagyják.
2.4. Használata feltételezzükNotNull
Amikor figyelmen kívül akarunk hagyni egy tesztet, ha valamilyen kifejezés az nulla, használhatjuk a feltételezzükNotNull () módszer:
@Test public void whenAssumeNotNullAndNotNullOSVersion_thenRun () {assumeNotNull (getOsName ()); assertEquals ("run", "RUN" .toLowerCase ()); }
Mint getOsName () nem null értéket ad vissza, a teszt futtatásának feltétele teljesül, és a teszt lefut.
2.5. Használata feltételezzük, hogy NoException
Végül pedig figyelmen kívül hagyhatunk egy tesztet, ha kivételt hozunk. Tudjuk használni assumeNoException () erre a célra:
@Test public void whenAssumeNoExceptionAndExceptionThrown_thenIgnore () {assertEquals ("minden rendben", "MINDEN OK" .toLowerCase ()); Karakterlánc t = null; próbáld ki a {t.charAt (0); } catch (NullPointerException npe) {feltételezNoException (npe); } assertEquals ("run", "RUN" .toLowerCase ()); }
Ebben a példában as t van nulla,a NullPointerException kivételt dobnak tehát a a teszt futtatásának feltételei nem teljesülnek, és a tesztet figyelmen kívül hagyják.
3. Hova tegyük a feltételezzükXXX Hívás?
Fontos megjegyezni a viselkedése feltételezzükXXX a módszerek attól függnek, hogy hova tesszük őket a tesztjeinkbe.
Módosítsuk kissé Feltételezzük, hogy példa így a assertEquals () hívás megy először. Készítsük el a assertEquals () kudarc:
@Test public void whenAssumeFalseAndOSIsLinux_thenIgnore () {assertEquals ("run", "RUN"); assumeFalse (isExpectedOS (getOsName ())); }
Amikor ezt a példát futtatjuk, a következők lesznek:
org.junit.ComparisonFailure: Várható: futtatás Actual: RUN
Ebben az esetben, tesztünket nem hagyjuk figyelmen kívül, mert nem sikerült, mielőtt elértük a Feltételezzük, hogy() hívás. Ugyanez történik az összes feltételezzükXXX mód. Tehát nekünk kell győződjön meg arról, hogy a megfelelő módszerrel helyezzük őket a vizsgálati módszerünkbe.
4. Következtetés
Ebben a rövid bemutatóban láthattuk, hogyan tudjuk feltételesen eldönteni, hogy a tesztnek futtatnia kell-e, a Feltételezni osztály a JUnit 4-ben. Ha a JUnit 5-et használjuk, akkor az 5.4-es vagy újabb verzióban is elérhető.
Mint mindig, a már átélt példák forráskódja megtalálható a GitHubon.