junit test suite filtering test cases
Ta vadnica bo obravnavala, kaj je JUnit Test Suite, kako ustvariti testni paket in kako filtrirati testne primere v JUnit 4 v primerjavi z JUnit 5:
O tem, kako preskočiti nekatere testne primere med izvajanjem, smo izvedeli v prejšnji vadnici. Spoznali smo tudi različne pripise, uporabljene v JUnit 4 in JUnit 5 za to.
V tej vadnici bomo izvedeli:
- Kaj je testna zbirka?
- Kako ustvarimo testno zbirko tako, da združimo več testnih primerov v skupino in izvedemo zbirko z uporabo razreda JUnitCore?
=> Obiščite tukaj za ekskluzivno serijo vadnic JUnit.
Kaj se boste naučili:
JUnit Test Suite
JUNIT 4: @RunWith, Annotacije @SuiteClasses
Vadnica Več načinov za izvajanje preskusov JUnit ponazoril, kako ustvariti testni paket v JUNIT 4.
Pripisi @RunWith in @SuiteClasses nam je pomagal ustvariti preskusno zbirko z združevanjem več razredov preskusov JUnit. Nato je datoteka za zagon z razredom JUnitCore.runclasses () poklicala izvedbo ustvarjenega testnega paketa.
Glejte omenjeni odsek za vse podrobnosti o poteku dela skupaj z dejansko kodo za JUNIT 4.
JUNIT 5: @RunWith, @SelectClasses, @SelectPackages Annotations
Ustvarjanje testne zbirke v JUNIT 5 je precej podoben temu, kar imamo v JUnit 4. Torej, kje je potem razlika?
# 1) V JUNIT 4 , imamo Suite.class, ki se kot parameter posreduje pripisu @RunWith za podporo ustvarjanju testne zbirke, medtem ko JUNIT 5 uporablja isti pripis @RunWith, vendar z vhodnim parametrom kot JUnitPlatform.class namesto Suite.razred .
Torej, vrstica kode v JUnit 5 izgleda @RunWith (JUnitPlatform.class). To je pripis, ki je priložen vašemu podprojektu JUnit Platform.
#two) V JUNIT 4 , uporabljamo @SuiteClasses za združevanje več razredov JUnit, ločenih z vejico, medtem ko ste v JUNIT 5 imamo:
- Pripis @SelectClasses to je enakovredno @SuiteClasses v JUnit 4 za združevanje več razredov JUnit.
- @SelectPackages pripis se uporablja za združevanje več testov iz paketov. Vnesti morate vrednost niza nizov, ki predstavlja paket, ki ga želite vključiti.
Z drugimi besedami,
- Če želite združiti testne primere iz enega samega paketa, vam JUnit 5 to omogoča.
- Ali v primeru, da želite združiti testne primere iz več paketov, JUnit 5 podpira, da to storite tudi vi. Tu je treba upoštevati, da se preskusi v vseh podpaketih omenjenega paketa privzeto vključijo tudi v testni paket.
JUNIT 5: Različni scenariji / primeri
Ustvarjanje zbirke preizkusov, ki združuje več razredov preizkusov
Delček kode je prikazan spodaj:
@RunWith(JUnitPlatform.class) @SelectClasses({JUnit5TestCase1.class, JUnit5TestCase2.class }) public class JUnitTestSuite { }
Ustvarjanje testne zbirke za en paket
Delček kode je prikazan spodaj:
@RunWith(JUnitPlatform.class) @SelectPackages({“ demo.tests “}) public class JUnit5TestSuite { }
Opomba :
- Recimo demo.testi paket vsebuje podpaket demo.tests.subtests.
- Koda @SelectPackages ({“demo.tests“}) vključi tudi vse teste iz podpaketa v sklop testov; privzeto.
- Če bi izjavili @SelectPackages ({“demo.tests.subtests“}) , testni primeri v okviru podpaketa demo.tests.subtests bo vključena samo v testni paket, medtem ko bodo testi iz njegovega nadrejenega paketa, tj. demo.testi ne bi bilo vključeno.
Ustvarjanje testne zbirke za več paketov
Delček kode za ustvarjanje preskusne zbirke za več paketov ločeno z vejico v JUnit 5 - bo videti, kot je prikazano spodaj:
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests”, “demo1.tests”, “demo2.tests”}) public class JUnit5TestSuite { }
Suite za filtriranje - JUnit 4 v primerjavi z JUnit 5
Včasih moramo filtrirati testne primere in izvesti določen niz testov glede na naše potrebe. Na primer, za regresijsko testiranje bi lahko našli niz testov, ločen sklop za enotno testiranje in ločen sklop testnih primerov za testiranje dima.
Iz nekaterih paketov ali razredov ali kategorij moramo izključiti ali vključiti testne primere. Filtriranje ali označevanje testov iz enega paketa je edina možnost pri JUnit4.
V primerjavi z JUnit 4 ima JUnit 5 dober nabor funkcij, ki podpirajo to potrebo po filtriranju testnih primerov iz enega ali več paketov in podpaketov glede na vaše spreminjajoče se zahteve.
JUnit 4 - @Category, @IncludeCategory, @ExcludeCategory
Testne primere v JUnit 4 lahko razvrstimo v različne kategorije. Te kategorije je mogoče med izvajanjem preizkusnega paketa izključiti ali vključiti. Pripisi @Category, @IncludeCategory in @ExcludeCategory so podprti od JUnit 4.12 in novejših.
Koraki na visoki ravni za ustvarjanje filtrov na podlagi kategorije ali kategorij so naslednji:
# 1) Ustvarite označevalni vmesnik, ki igra vlogo v kategoriji.
#two) Preskusne metode razredov, ki bodo vključeni v SuiteClasses, označite s @Kategorija in ime kategorije.
# 3) V datoteki testne zbirke uporabite pripis @IncludeCategory z imenom kategorije, ki vključuje teste, ki pripadajo določeni kategoriji.
# 4) V datoteki testne zbirke uporabite pripis @ExcludeCategory z imenom kategorije za njihovo izključitev.
# 5) Pripis @Category je mogoče uporabiti tudi na preizkusni ravni ali ravni razreda. Če je pripis uporabljen na preizkusni ravni, se ta preizkus označi z dano kategorijo, če pa je pripis na ravni razreda, so vsi preskusi v razredu označeni za določeno kategorijo.
Oglejmo si še nekaj podrobnosti, da bomo razumeli praktično izvajanje kategorizacije testov in njihovega filtriranja za izvedbo:
Korak 1:
Začeli bomo z ustvarjanjem a označevalni vmesnik ki bo igral vlogo a kategorija za preskusne metode. Tu ustvarimo kategorijo z imenom UnitTest . Koda je zelo preprosta. Glejte spodnjo kodo.
Koda za UnitTest.java
package demo.tests; public interface UnitTest {}
2. korak:
Kategorija bomo označili na nivo preskusne metode v razredu JUnitTestCase1.java . Če želimo testni primer junitMethod1 () dodati v kategorijo UnitTest, moramo testno metodo označiti z @Category (UnitTest.class) .
To testno metodo doda v kategorijo UnitTest. Druge preskusne metode (če obstajajo) niso označene s kategorijo, razen če so metode označene s kategorijo.
Da v naši kodi deluje opomba @Category, moramo uvoziti paket org.junit.experimental.categories.Category
Delček kode iz JUnitTestCase1.java:
@Category(UnitTest.class) @Test public void junitMethod1(){ int Value2=9000; Assert. assertEquals (Value1, Value2); }
Tudi preskusna metoda lahko spada v več kategorij Npr. : @Category (UnitTest.class, SmokeTest.class)
3. korak:
Zdaj bi označil kategorijo na razredni ravni v razredu JUnitTestCase2.java . Ista izjava, ki je bila dodana na ravni testne metode v prejšnjem koraku, bo dodana tudi v datoteko trenutnega razreda.
Upoštevajte, da bomo tukaj dodali stavek na ravni razreda. S tem bodo vse preskusne metode v datoteki pripadale UnitTest Kategorija.
Delček kode iz JUnitTestCase2.java:
@Category(UnitTest.class) @Test public class JUnitTestCase2 { public String stringValue='JUnit';
4. korak:
brezplačne spletne storitve za milo za testiranje
Zdaj, ko smo naše zahtevane testne primere razvrstili v kategorijo UnitTest, bomo zdaj videli, kako jih dodati v zbirko testov, tako da jih filtriramo glede na kategorijo. Izvedli bomo določene spremembe kode v JUnitTestSuite.class da to dokažem.
- Kategorije.razred bo posredovana kot parameter pripisu @RunWith.
- @ Suite.SuiteClasses bo uporabil niz nizov preizkusnih razredov.
- Pripis @ Categories.IncludeCategory bo za parameter potreboval UnitTest.class.
- Ta izjava nam bo pomagala filtrirati celotno zbirko in zagnati samo tiste testne primere iz zbirke, ki spada v kategorijo.
- Categories.class potrebuje paket org.junit.experimental.categories.Kategorije za uvoz.
Delček kode za JunitTestSuite.java
@RunWith(Categories.class) @Categories.IncludeCategory(UnitTest.class) @Suite.SuiteClasses({JUnitTestCase1.class, JUnitTestCase2.class}) public class JUnitTestSuite {
Pripis @ Categories.IncludeCategory lahko zapišemo tudi kot @IncludeCategory. Ustvarite lahko tudi več vmesnikov (kategorij) in metode razredov / preskusov označite z več kategorijami, ločenimi z vejico. Spodnji primer bo filtriral teste, ki spadajo v kategorijo - kategorija1 in kategorija2.
Primer: @IncludeCategory ({Category1.class, Category2.class})
Podobna pravila veljajo @ Categories.ExcludeCategory / @ExcludeCategory za izključitev preskusnih metod v kategoriji ali kategorijah med preskusom.
JUnit 5 - @IncludeTags, @ExcludeTags, @IncludePackages, @ExcludePackages, @IncludeClassNamePatterns, @ExcludeClassNamePatterns
JUnit 5 je opremljen z več pristopi za organizacijo in filtriranje testnih primerov.
JUNIT 5 - @IncludeTags, @ExcludeTags
# 1) Tako kot JUnit 4 ima opombe @IncludeCategory in @ExcludeCategory za podporo filtriranju testnih primerov za izvajanje.
#two) JUnit 5 ima pripombe @IncludeTags in @ExcludeTags, da doseže isti namen.
# 3) JUnit 4 se nanaša na testne primere, ki jih je treba organizirati v določeno kategorijo, medtem ko se JUnit 5 nanaša na označevanje testnih primerov s posebno oznako, da se omogoči filtriranje testnih primerov za izvedbo.
Koraki na visoki ravni za ustvarjanje filtrov na podlagi oznak so naslednji:
- Testne metode paketov, ki bodo vključeni v @SelectPackages, označite z @Oznaka in uporabniško določeno ime oznake. En razred ima lahko različne oznake za različne preskusne metode.
- @Tag lahko označite tudi na ravni predavanja, tako da so označeni vsi testi v razredu.
- V datoteki testne zbirke uporabite pripis @IncludeTags z imenom oznake, da vključuje teste, ki pripadajo določeni oznaki.
- V datoteki testne zbirke uporabite pripis @ExcludeTags z imenom oznake za njihovo izključitev iz preskusne zbirke.
Zdaj imamo podrobno ponazoritev, kako v JUnit 5 praktično izvajati filtriranje.
Korak 1 : Preskusno metodo v JUnit5TestCase1.java označujemo z imenom oznake »Regresija«
Delček kode iz JUnit5TestCase1.java:
@Tag(“Regression”) @Test public void junitMethod1(){
2. korak : Preskusno metodo v JUnit5TestCase2.java označujemo z imenom oznake »SmokeTest«.
Delček kode iz JUnit5TestCase2.java:
@Tag(“SmokeTest”) @Test public void junitMethod2(){
3. korak: Zdaj, ko so bile testne metode označene, bomo zdaj posodobili JUnit5TestSuite.java, da bomo dodali ustrezne filtre po oznakah za teste. Spodnja koda vključuje vse teste, ki so označeni kot 'Regresija', in izključujejo vse tiste, ki so označeni kot 'SmokeTest'.
Delček kode iz JUnit5TestSuite.java:
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludeTags(“Regression”) @ExcludeTags(“SmokeTest”) public class JUnit5TestSuite { }
JUNIT 5 - @IncludePackages, @ExcludePackages
Že vemo, da ko posredujemo ime paketa v @SelectPackages Pripombe se preskusi v podpaketih paketa dodajo tudi v testni paket.
Obstajajo lahko nekateri podpaketi, ki jih želimo vključiti v naš testni paket, medtem ko je nekaj drugih podpaketov, ki jih ne želimo ali morda niso pomembni, vključiti v naš paket.
To omogočajo pripisi @IncludePackages in @ExcludePackages v JUNITU 5.
Predpostavimo, da imamo paket 'demo.tests', ki ima tri podpakete, tj. Podpaket1, podpaket2 in podpaket 3, s svojimi testnimi razredi v vsakem od spodnjih paketov.
Oglejmo si delček kode JUnit5TestSuite.java, da si predstavimo, kako vključiti in izključiti paket.
Scenarij 1: Uporabi filter za vključitev testnih primerov samo iz podpaketa1.
Spodnja koda vključuje vse teste iz vseh razredov JUnit v paketu demo.tests.subpackage1, vendar izključuje vse teste neposredno pod paketom demo.test in tiste iz podpaketa2 in podpaketa3 paketa.
Delček kode iz JUnit5TestSuite.java:
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludePackages(“demo.tests.subpackage1”) public class JUnit5TestSuite { }
Scenarij 2: Uporabi filter za izključitev testnih primerov samo iz podpaketa3 paketa.
Spodnja koda izključuje vse teste iz razredov JUnit v paketu - demo.tests.subpackage3, vendar paket vključuje vse teste neposredno pod paketom demo.test in tiste iz podpaketa1 in podpaketa2 paketa.
Delček kode iz JUnit5TestSuite.java:
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @ExcludePackages(“demo.tests.subpackage3”) public class JUnit5TestSuite { }
JUnit 5 - @IncludeClassNamePatterns, @ExcludeClassNamePatterns
Ko želite iz paketa vključiti ali izključiti določene razrede, ki se ujemajo z določenim regularnim izrazom, pripisi @ IncludeClassNamePatterns in @ ExcludeClassnamePatterns se lahko uporablja v datoteki razreda preskusnega paketa.
Oglejmo si sliko skozi posodobitev kode v JUnit5TestSuite.java
Scenarij 1:
Spodnja koda vključuje razrede, ki se končajo z ‘Ctests’ iz paketa demo.tests
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludeClassNamePatterns({'^.*CTests?$'})
Scenarij 2:
Zdaj bomo izključili tiste razrede, ki inicirati s ‘STest’ iz paketa demo.tests
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @ExcludeClassNamePatterns({'^STest.*$'})
Scenarij št. 3:
Kot kriterij filtriranja je mogoče prenesti tudi več regularnih izrazov. Spodnja koda navaja dva različna regularna izraza, ločena z ALI ”Operater. Prorezna vrstica | je operater OR.
najboljša brezplačna programska oprema za optimizacijo delovanja računalnika
Koda filtrira razrede iniciranje s Preizkus ( Preizkusite. *) ali konec s Preizkusi (*. Preizkusi?) in vključuje te razrede v testni zbirki, saj se uporablja pripis @IncludeClassNamePatterns.
Opomba: Če se popolnoma kvalificirano ime razreda ujema z vsaj enim vzorcem, bo razred pridobljen v pripisu @IncludeClassNamePatterns ali @ExcludeClassNamePatterns.
@RunWith (JUnitPlatform.class)
@SelectPackages ({“demo.tests“})
@IncludeClassNamePatterns (. * Preizkusi?) $ ”)
Pogosta vprašanja o testnih primerih filtriranja JUnit
Tu je vprašanje, ki se vam morda že nekaj časa zadržuje v mislih.
V # 1) Kakšna je razlika med onemogočanjem / ignoriranjem testa in filtriranjem testa? Ali nobena od funkcij ne more služiti istemu namenu preskakovanja testnih primerov med izvajanjem?
Odgovor: Vprašanje je resnično resnično in nanj je vredno odgovoriti.
- S funkcijo preizkusa filtriranja lahko tudi izključite vključujejo testi, odvisno od označene kategorije. Medtem ko se lahko z onemogočanjem odločite le za izključitev in ne vključitev testov za izvedbo.
- Filtriranje testnih primerov je nekakšen pogojni preskok testnega primera, medtem ko se v primeru prezrtih testov preskočijo brez pogojev.
- Druga pomembna razlika med obema je, da ko zaženete testne primere s testi, označenimi s @Ignore ali @Disabled - prezrti testi se prikažejo v rezultatih testov pod SKIPPED štetje
- Ko zaženete filtrirane teste, se ti sploh ne prikažejo v rezultatih.
Zaključek
V tej vadnici smo se naučili filtrirati teste, tako da smo jim dodali kategorijo / oznako.
V JUnit 4 smo izvedeli, da imamo @Category, @IncludeCategory in @ExcludeCategory za filtriranje testnih primerov, medtem ko ima JUnit 5 @IncludeTags in @ExcludeTags, da storijo enako.
Poleg tega ima JUnit 5 dodatne možnosti filtriranja z uporabo pripisov @IncludePackages, @ExcludePackages in tudi pripisov za vključitev ali izključitev razredov z vzorci imen razredov. Bolj ko raziskujemo; zavedamo se, da je treba raziskovati še veliko več.
=> Tukaj bodite pozorni na preprosto serijo JUnit Training.
Priporočeno branje
- JUnit Ignore Test Case: JUnit 4 @Ignore Vs JUnit 5 @Disabled
- JUnit testi: Kako napisati primere testov JUnit s primeri
- Seznam pripisov JUnit: JUnit 4 Vs JUnit 5
- Vadnica JUnit za začetnike - kaj je testiranje JUnit
- Kaj je preskusna naprava JUnit: Vadnica s primeri JUnit 4
- Več načinov za izvajanje preskusov JUnit
- Prenesite, namestite in konfigurirajte JUnit v Eclipse
- Uvod v JUnit Framework in njegovo uporabo v skriptu selena - Vadnica za selen # 11