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.