Označavanje i filtriranje JUnit testova

1. Pregled

Uobičajeno je da se svi naši testovi JUnit izvršavaju automatski kao dio CI gradnje pomoću Mavena. To je, međutim, često dugotrajno.

Stoga, često želimo filtrirati svoje testove i izvršiti ili jedinične testove ili integracijske testove ili oboje u različitim fazama procesa izrade.

U ovom ćemo uputstvu pogledati nekoliko tehnika filtriranja za test slučajeve s JUnit 5. U sljedećim odjeljcima također ćemo razmotriti razne mehanizme filtriranja prije JUnit 5.

2. JUNIT 5 Oznake

2.1. Bilježenje JUnit testova sa Označiti

S JUnit 5 možemo filtrirati testove označavajući njihov podskup pod jedinstvenim nazivom oznake. Na primjer, pretpostavimo da imamo i jedinične testove i integracijske testove implementirane pomoću JUnit 5. Možemo dodati oznake na oba skupa test slučajeva:

@Test @Tag ("IntegrationTest") javna void testAddEfficieeUsingSimpelJdbcInsert () {} @Test @Tag ("UnitTest") javna praznina givenNumberOfEfficieeWhenCountEfficieeThenCountMatch () {}

Odsad možemo izvršiti sva ispitivanja pod određenim imenom oznake odvojeno. Također možemo označiti razred umjesto metoda. Time se uključuju svi testovi u razred pod oznakom.

U sljedećih nekoliko odjeljaka vidjet ćemo razne načine filtriranja i izvršavanja označenih JUnit testova.

2.2. Filtriranje oznaka s testnim paketom

JUnit 5 omogućuje nam implementaciju testnih paketa pomoću kojih možemo izvršavati označene test slučajeve:

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

Ako pokrenemo ovaj paket, svi testovi JUnit pod oznakom UnitTest bi se pogubio. Slično tome, možemo izuzeti testove s ExcludeTags bilješka.

2.3. Filtriranje oznaka pomoću dodatka Maven Surefire

Za filtriranje JUnit testova unutar različitih faza gradnje Mavena možemo koristiti dodatak Maven Surefire. Dodatak Surefire omogućuje nam uključivanje ili isključivanje oznaka u konfiguraciji dodatka:

 maven-surefire-plugin 2.20.1 UnitTest 

Ako sada izvršimo ovaj dodatak, izvršit će sve testove koji su označeni kao UnitTest. Slično tome, možemo izuzeti test slučajeve pod nazivom oznake:

IntegrationTest

2.4. Filtriranje oznaka pomoću IDE-a

IDE-ovi sada omogućuju filtriranje JUnit testova po oznakama. Na taj način možemo izvršiti određeni skup označenih testova izravno iz našeg IDE-a.

IntelliJ omogućuje takvo filtriranje kroz prilagođenu konfiguraciju pokretanja / otklanjanja pogrešaka:

Kao što je prikazano na ovoj slici, odabrali smo Test Kind kao oznake i oznaku koja će se izvršiti u izrazu oznake.

JUnit 5 omogućuje razne izraze oznaka koji se mogu koristiti za filtriranje oznaka. Na primjer, za pokretanje svega, osim integracijskih testova, mogli bismo koristiti ! IntegrationTest kao izraz oznake. Ili za izvršavanje oboje UnitTest i IntegrationTest, možemo koristiti UnitTest | IntegrationTest.

Slično tome, Eclipse također omogućuje uključivanje ili isključivanje oznaka u konfiguracijama JUnit Run / Debug:

3. JUNIT 4 kategorije

3.1. Kategorizacija JUnit testova

JUnit 4 omogućuje nam izvršavanje podskupine JUnit testova dodavanjem u različite kategorije. Kao rezultat toga, možemo izvršiti test slučajeve u određenoj kategoriji, isključujući druge kategorije.

Možemo stvoriti što više kategorija implementiranjem sučelja markera gdje naziv sučelja markera predstavlja naziv kategorije. Za naš ćemo primjer primijeniti dvije kategorije, UnitTest:

javno sučelje UnitTest {}

i IntegrationTest:

javno sučelje IntegrationTest {}

Sada svoj JUnit možemo kategorizirati dodavanjem oznaka sa Kategorija napomena:

@Test @Category (IntegrationTest.class) test javne praznineAddEeeeeeUsingSimpelJdbcInsert () {} @Test @Category (UnitTest.class) javna praznina givenNumberOfEfficieeWhenCountEfficieeThenCountMatch () {}

U našem primjeru stavljamo Kategorija napomena o ispitnim metodama. Slično tome, ovu bilješku možemo dodati i u testnu klasu, dodajući tako sve testove u jednu kategoriju.

3.2. Kategorije Trkač

Da bismo izvršili JUnit testove u kategoriji, moramo implementirati klasu test suite:

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

Ovaj se testni paket može izvršiti iz IDE-a i izvršit će sve JUnit testove pod UnitTest kategorija. Slično tome, možemo isključiti i kategoriju testova iz paketa:

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

3.3. Izuzimanje ili uključivanje kategorija u Mavenu

Napokon, također možemo uključiti ili isključiti kategorije JUnit testova iz Mavenove gradnje. Dakle, možemo izvršavati različite kategorije JUnit testova u različitim Maven profilima.

Za to ćemo upotrijebiti dodatak Maven Surefire:

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

I slično tome možemo izuzeti kategoriju iz Mavenove gradnje:

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

To je slično primjeru o kojem smo govorili u prethodnom odjeljku. Jedina je razlika što smo naziv oznake zamijenili potpuno kvalificiranim nazivom Kategorija provedba.

4. Filtriranje JUnit testova pomoću Maven Surefire dodatka

Oba pristupa o kojima smo razgovarali implementirani su s knjižnicom JUnit. Agnotički način provedbe filtriranja testnih slučajeva je slijeđenje pravila imenovanja. Za naš primjer koristit ćemo sufiks UnitTest za jedinične testove i IntegrationTest za integracijske testove.

Sada ćemo koristiti dodatak Maven Surefire za izvršavanje ili jediničnih testova ili integracijskih testova:

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

The isključuje oznaka ovdje filtrira sve integracijske testove i izvršava samo jedinične testove. Takva konfiguracija uštedjela bi znatnu količinu vremena izrade.

Nadalje, možemo izvršiti Pouzdan dodatak unutar različitih Maven profila s različitim izuzecima ili uključenjima.

Iako Pouzdan dobro funkcionira za filtriranje, preporuča se upotreba dodatka Failsafe za izvršavanje integracijskih testova u Mavenu.

5. Zaključak

U ovom smo članku vidjeli način označavanja i filtriranja testnih slučajeva pomoću JUnit 5. Koristili smo Označiti napomena i također su vidjeli razne načine za filtriranje JUnit testova s ​​određenom oznakom kroz IDE ili u procesu izrade pomoću Mavena.

Također smo razgovarali o nekim mehanizmima filtriranja prije JUnit 5.

Svi primjeri dostupni su na Githubu.


$config[zx-auto] not found$config[zx-overlay] not found