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: 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: és IntegrationTest: Most kategorizálhatjuk a JUnit-jünket azzal, hogy megjegyezzük vele Kategória kommentár: 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. A JUnit tesztek végrehajtásához egy kategóriában egy tesztcsomag osztályt kell megvalósítanunk: 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: 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: Hasonlóképpen kizárhatunk egy kategóriát a Maven-összeállításból: 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. 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: 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. 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.3. JUnit 4 Kategóriák
3.1. A JUnit tesztek kategorizálása
nyilvános felület UnitTest {}
nyilvános felület IntegrationTest {}
@Test @Category (IntegrationTest.class) public void testAddEmployeeUsingSimpelJdbcInsert () {} @Test @Category (UnitTest.class) public void givenNumberOfEmployeeWhenCountEmployeeThenCountMatch () {}
3.2. Kategóriák Futó
@RunWith (Categories.class) @IncludeCategory (UnitTest.class) @SuiteClasses (EmployeeDAOCategoryIntegrationTest.class) public class EmployeeDAOUnitTestSuite {}
@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
maven-surefire-plugin 2.20.1 com.baeldung.categories.UnitTest
maven-surefire-plugin 2.20.1 com.baeldung.categories.IntegrationTest
4. A JUnit tesztek szűrése Maven Surefire beépülő modullal
maven-surefire-plugin 2.20.1 ** / * IntegrationTest.java
5. Következtetés