JUnit tesztek címkézése és szűrése

1. Áttekintés

Nagyon gyakori, hogy az összes JUnit tesztet automatikusan végrehajtjuk a CI felépítésének részeként a Maven segítségével. Ez azonban gyakran időigényes.

Ebből kifolyólag, gyakran szeretnénk szűrni a tesztjeinket és végrehajtani akár egységteszteket, akár integrációs teszteket, vagy mindkettőt a készítési folyamat különböző szakaszaiban.

Ebben az oktatóanyagban megvizsgálunk néhány szűrési technikát a JUnit 5 teszteseteihez. A következő szakaszokban különféle szűrési mechanizmusokat is megvizsgálunk a JUnit 5 előtt.

2. JUnit 5 címkék

2.1. JUnit tesztek megjegyzése a Címke

A JUnit 5 segítségével szűrhetjük a teszteket úgy, hogy azok részhalmazát egyedi címke névvel címkézzük fel. Tegyük fel például, hogy az JUnit 5 használatával egység teszteket és integrációs teszteket is megvalósítottunk. Címkéket adhatunk mindkét tesztesethez:

@Test @Tag ("IntegrationTest") public void testAddEmployeeUsingSimpelJdbcInsert () {} @Test @Tag ("UnitTest") public void givenNumberOfEmployeeWhenCountEmployeeThenCountMatch () {}

Mostantól megtehetjük külön-külön hajtsa végre az összes tesztet egy adott címke név alatt. Címkézhetjük az osztályt a módszerek helyett is. Ezáltal az osztály összes tesztjét felcímkézzük.

A következő szakaszokban a címkézett JUnit tesztek szűrésének és végrehajtásának különféle módjait fogjuk megismerni.

2.2. Címkék szűrése a Test Suite segítségével

A JUnit 5 lehetővé teszi számunkra, hogy tesztcsomagokat valósítsunk meg, amelyeken keresztül címkézett teszteseteket hajthatunk végre:

@RunWith (JUnitPlatform.class) @SelectPackages ("com.baeldung.tags") @IncludeTags ("UnitTest") public class EmployeeDAOUnitTestSuite {}

Ha ezt a csomagot működtetjük, minden JUnit teszt a címke alatt Egységteszt kivégeznék. Hasonlóképpen kizárhatjuk a teszteket a ExcludeTags annotáció.

2.3. Címkék szűrése a Maven Surefire bővítménnyel

A JUnit tesztek szűréséhez a Maven felépítésének különböző fázisaiban használhatjuk a Maven Surefire bővítményt. A Surefire beépülő modul lehetővé teszi számunkra a címkék beépítését vagy kizárását a bővítmény konfigurációjában:

 maven-surefire-plugin 2.20.1 UnitTest 

Ha most végrehajtjuk ezt a bővítményt, akkor az összes olyan nevű tesztet végrehajtja Egységteszt. Hasonlóképpen kizárhatunk teszteseteket egy címke neve alatt:

IntegrationTest

2.4. Címkék szűrése IDE-vel

Az IDE-k mostantól lehetővé teszik a JUnit tesztek szűrését címkék alapján. Így egy meghatározott címkézett tesztkészletet hajthatunk végre közvetlenül az IDE-nktől.

Az IntelliJ lehetővé teszi az ilyen szűrést egy egyedi Run / Debug konfiguráción keresztül:

Ahogy ezen a képen látható, a Test Kind-t választottuk címkeként és a Tag Expressionban végrehajtandó címkét.

A JUnit 5 különféle címkekifejezéseket tesz lehetővé, amelyek felhasználhatók a címkék szűrésére. Például, az integrációs tesztek kivételével mindent használhatunk ! IntegrationTest mint a Tag Expression. Vagy mindkettő végrehajtására Egységteszt és IntegrationTest, tudjuk használni UnitTest | IntegrationTest.

Hasonlóképpen, az Eclipse lehetővé teszi címkék felvételét vagy kizárását a JUnit Run / Debug konfigurációkba is:

3. JUnit 4 Kategóriák

3.1. A JUnit tesztek kategorizálása

A JUnit 4 lehetővé teszi számunkra a JUnit tesztek egy részhalmazának végrehajtását különböző kategóriákba sorolással. Ennek eredményeként végrehajthatjuk a teszteseteket egy adott kategóriában, miközben kizárunk más kategóriákat.

Annyi kategóriát hozhatunk létre, ha olyan interfészeket valósítunk meg, ahol a marker felület neve a kategória nevét képviseli. Például két kategóriát valósítunk meg, Egységteszt:

nyilvános felület UnitTest {}

és IntegrationTest:

nyilvános felület IntegrationTest {}

Most kategorizálhatjuk a JUnit-jünket azzal, hogy megjegyezzük vele Kategória kommentár:

@Test @Category (IntegrationTest.class) public void testAddEmployeeUsingSimpelJdbcInsert () {} @Test @Category (UnitTest.class) public void givenNumberOfEmployeeWhenCountEmployeeThenCountMatch () {}

Példánkban a Kategória jegyzet a vizsgálati módszerekről. Hasonlóképpen felvehetjük ezt az annotációt a tesztosztályra is, így az összes teszt egy kategóriába kerül.

3.2. Kategóriák Futó

A JUnit tesztek végrehajtásához egy kategóriában egy tesztcsomag osztályt kell megvalósítanunk:

@RunWith (Categories.class) @IncludeCategory (UnitTest.class) @SuiteClasses (EmployeeDAOCategoryIntegrationTest.class) public class EmployeeDAOUnitTestSuite {}

Ez a tesztcsomag végrehajtható egy IDE-ből, és az összes JUnit tesztet végrehajtja a Egységteszt kategória. Hasonlóképpen kizárhatunk egy tesztcsoportot is a csomagból:

@RunWith (Categories.class) @ExcludeCategory (IntegrationTest.class) @SuiteClasses (EmployeeDAOCategoryIntegrationTest.class) public class EmployeeDAOUnitTestSuite {}

3.3. Kategóriák kizárása vagy felvétele a Maven-be

Végül felvehetjük vagy kizárhatjuk a JUnit tesztek kategóriáit is a Maven felépítéséből. Így különböző kategóriájú JUnit teszteket hajthatunk végre különböző Maven profilokban.

Ehhez a Maven Surefire plugint fogjuk használni:

 maven-surefire-plugin 2.20.1 com.baeldung.categories.UnitTest 

Hasonlóképpen kizárhatunk egy kategóriát a Maven-összeállításból:

 maven-surefire-plugin 2.20.1 com.baeldung.categories.IntegrationTest 

Ez hasonló az előző részben tárgyalt példához. Az egyetlen különbség az, hogy a címke nevét kicseréltük a Kategória végrehajtás.

4. A JUnit tesztek szűrése Maven Surefire beépülő modullal

Mindkét megközelítést, amelyet megvitattunk, a JUnit könyvtárral valósítottuk meg. A tesztesetek szűrésének megvalósítási agnosztikus módja egy elnevezési megállapodás követése. Példaként az UnitTest utótagot fogjuk használni az egységtesztekhez, az IntegrationTest pedig az integrációs tesztekhez.

Most a Maven Surefire bővítményt fogjuk használni az egységtesztek vagy az integrációs tesztek végrehajtására:

 maven-surefire-plugin 2.20.1 ** / * IntegrationTest.java 

A kizárja A tag itt kiszűri az összes integrációs tesztet, és csak az egység teszteket hajtja végre. Egy ilyen konfiguráció jelentős mennyiségű építési időt takarít meg.

Továbbá végre tudjuk hajtani a Holtbiztos plugin a különböző Maven profilokban, különböző kizárásokkal vagy zárványokkal.

Habár Holtbiztos jól működik a szűréshez, ajánlott a Failsafe beépülő modult használni az integrációs tesztek végrehajtásához a Mavenben.

5. Következtetés

Ebben a cikkben láttunk egy módszert a tesztesetek címkézésére és szűrésére a JUnit 5 segítségével. Használtuk a Címke megjegyzéseket, és különféle módokat is látott a JUnit tesztek szűrésére egy adott címkével az IDE-n keresztül vagy a Maven használatával végzett összeállítási folyamatban.

Megbeszéltünk néhány szűrési mechanizmust az 5. JUnit előtt is.

Minden példa elérhető a Github oldalon.