Programiranje

Enotni in integracijski testi s kategorijama Maven in JUnit

Ta primer prikazuje, kako razdeliti enote in teste integracije z uporabo kategorij Maven in JUnit.

Posebej je uporaben za obstoječe testne pakete in se lahko izvede v nekaj minutah.

Moja prejšnja objava je pokazala, kako uporabimo profil maven za razdelitev enotnih in integracijskih testov.

//johndobie.blogspot.co.uk/2011/06/seperating-maven-unit-integration-tests.html

To je bila zelo dobro brana objava in všeč mi je, kako uporablja ločene imenike. Vendar ta primer prikazuje veliko preprostejšo tehniko, ki jo je mogoče enostavno uporabiti za starejše testne pakete.

Ponuja večino prednosti izvirnika in je bolj udobno v svetu Maven.

Koda za primer je tukaj.

svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/categor ... mvn čista namestitev 

Od JUnit 4.8 lahko določite svoje kategorije za teste. To vam omogoča označevanje in skupinske teste.

Ta primer prikazuje, kako enostavno je ločiti enoto in test integracije s pripisom @Catgegory.

//kentbeck.github.com/junit/javadoc/latest/org/junit/experimental/categories/Categories.html

Prvi korak pri razvrščanju testa z uporabo kategorij je ustvariti vmesnik označevalnika.

Ta vmesnik bo uporabljen za označevanje vseh preskusov, ki jih želite zagnati, kot integracijske teste.

javni vmesnik IntegrationTest {} 

Oznako kategorije dodajte na vrh preizkusnega razreda. Vzame ime vašega novega vmesnika.

uvoz org.junit.experimental.categories.Category; @Category (IntegrationTest.class) javni razred ExampleIntegrationTest {@Test public void longRunningServiceTest () vrže izjemo {}} 

Kategorije se lahko uporabljajo za označevanje razredov ali metod. Resnično po mojem mnenju bi morali označiti samo razred.

Če imate enoten in integracijski test v enem razredu, ga razdelite.

Lepota te rešitve je v tem, da se na strani preizkusa enote nič ne spremeni.

Preprosto dodamo nekaj konfiguracije vtičniku maven surefire, da prezremo kakršne koli teste integracije.

 org.apache.maven.plugins maven-surefire-plugin 2.11 org.apache.maven.surefire surefire-junit47 2.12 ** / *. class com.test.annotation.type.IntegrationTest 

Obstajata 2 zelo pomembna dela. Prvi je, da nastavite zanesljiv požar, da izključi vse integracijske teste.

com.test.annotation.type.IntegrationTest 

Surefire bo zagnal vse vaše teste, razen tistih, ki so označeni kot integracijski test.

Drugi pomemben del je zagotoviti, da vtičnik surefire uporablja ustreznega ponudnika JUnit. Ponudnik JUnit47 je potreben za pravilno zaznavanje kategorij.

  org.apache.maven.surefire surefire-junit47 2.12 

Da se prepričamo, da to deluje pravilno, lahko zaženemo enote

mvn čisti test 

Iz spodnjega izhoda lahko vidite, da se preizkus enote izvaja, integracijskega preskusa pa ne.

-------------------------------------------------- ----- PRESKUSI -------------------------------------------- ----------- Izvajanje com.test.EmptyUnitTest Preizkusi: 1, napake: 0, napake: 0, preskočeni: 0, pretečeni čas: 0 sekund Rezultati: teki: 1, neuspehi: 0, Napake: 0, preskočeno: 0 [INFO] ---------------------------------------- -------------------------------- [INFO] ZGRADI USPEH [INFO] ---------- -------------------------------------------------- ------------ 

Konfiguracija tega je zelo preprosta.

Uporabljamo standardni varnostni vtičnik in ga konfiguriramo samo za izvajanje integracijskih testov.

 maven-failsafe-plugin 2.12 org.apache.maven.surefire surefire-junit47 2.12 com.test.annotation.type.IntegrationTest test-test ** / *. class 

Konfiguracija uporablja standardni cilj izvedbe za zagon vtičnika za varno delovanje med fazo preizkusa integracije gradnje.

Naslednja konfiguracija zagotavlja izvajanje samo integracijskih testov.

com.test.annotation.type.IntegrationTest 

In spet mora biti ponudnik JUnit pravilno konfiguriran.

  org.apache.maven.surefire surefire-junit47 2.12 

To je to!

Zdaj lahko zaženemo celotno gradnjo.

mvn čista namestitev 

Tokrat se med izvajanjem preskusa enote izvajajo tudi integracijski testi med fazo integracijskega preskusa.

-------------------------------------------------- ----- PRESKUSI -------------------------------------------- ----------- Izvajanje preizkusov com.test.AnotherEmptyIntegrationTest: 1, neuspehi: 0, napake: 0, preskočeni: 0, potekel čas: 0,016 sek Izvajanje testov com.test.EmptyIntegrationTest: 1, Napake: 0, Napake: 0, Preskočeno: 0, Potekel čas: 0 sek Rezultati: Izvedeni testi: 2, Napake: 0, Napake: 0, Preskočeni: 0 

Na tej povezavi si oglejte, kako enostavno je k tej metodi dodati pokritost kode.

//johndobie.blogspot.co.uk/2012/05/easy-unit-and-integration-code-coverage.html

Za popolnejši primer, ki uporablja zagone Tomcat in bazo podatkov.

svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/code-co ... mvn čista namestitev -Ptomcat-embedded 

Temelji na tem primeru

//johndobie.blogspot.com/2011/10/maven-integration-testing-and-spring.html

To zgodbo "Preskusi enot in integracije s kategorijama Maven in JUnit" je prvotno objavil JavaWorld.

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