Tento príklad ukazuje, ako rozdeliť testy jednotky a integrácie pomocou kategórií Maven a JUnit.
Je to obzvlášť užitočné pre existujúce testovacie sady a dá sa implementovať za pár minút.
Môj predchádzajúci príspevok ukázal, ako používame profil maven na rozdelenie testov jednotky a integrácie.
//johndobie.blogspot.co.uk/2011/06/seperating-maven-unit-integration-tests.html
Toto bol veľmi dobre prečítaný príspevok a páči sa mi, ako používa samostatné adresáre. Tento príklad však ukazuje oveľa jednoduchšiu techniku, ktorú je možné ľahko použiť na staršie testovacie sady.
Ponúka väčšinu výhod originálu a sedí pohodlnejšie vo svete Maven.
Kód príkladu je tu.
svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/categor ... mvn clean install
Od JUnit 4.8 môžete definovať svoje vlastné kategórie pre testy. Takto môžete označiť a zoskupiť testy.
Tento príklad ukazuje, aké ľahké je oddeliť test jednotky a integrácie pomocou anotácie @Catgegory.
//kentbeck.github.com/junit/javadoc/latest/org/junit/experimental/categories/Categories.html
Prvým krokom pri zoskupení testu pomocou kategórií je vytvorenie rozhrania značiek.
Toto rozhranie sa použije na označenie všetkých testov, ktoré chcete spustiť, ako integračné testy.
verejné rozhranie IntegrationTest {}
Pridajte poznámku k kategórii na začiatok testovacej triedy. Bude mať názov vášho nového rozhrania.
importovať org.junit.experimentálne.kategórie.Kategória; Verejná trieda @Category (IntegrationTest.class) ExampleIntegrationTest {@Test public void longRunningServiceTest () vyvolá výnimku {}}
Kategórie možno použiť na označenie tried alebo metód. Podľa môjho názoru by si mal naozaj označiť iba triedu.
Ak máte testy jednotky aj integrácie v jednej triede, rozdelte ich.
Krása tohto riešenia je, že pre stránku testovania jednotiek sa vlastne nič nezmení.
Jednoducho pridáme určitú konfiguráciu do pluginu maven surefire, aby ignoroval akékoľvek integračné testy.
org.apache.maven.plugins maven-surefire-plugin 2.11 org.apache.maven.surefire surefire-junit47 2,12 ** / *. trieda com.test.annotation.type.IntegrationTest
Existujú 2 veľmi dôležité časti. Prvou je nakonfigurovať surefire tak, aby sa vylúčili všetky testy integrácie.
com.test.annotation.type.IntegrationTest
Program Surefire spustí všetky vaše testy okrem testov označených ako test integrácie.
Ďalšou dôležitou časťou je zabezpečiť, aby doplnok surefire používal správneho poskytovateľa JUnit. Poskytovateľ JUnit47 je potrebný na správne zistenie kategórií.
org.apache.maven.surefire surefire-junit47 2.12
Aby sme sa ubezpečili, že to funguje správne, môžeme spustiť jednotkové testy
mvn čistý test
Z výstupu nižšie vidíte, že je spustený test jednotky, ale nie test integrácie.
-------------------------------------------------- ----- TESTY -------------------------------------------- ----------- Spustenie com.test.EmptyUnitTest Spustené testy: 1, Zlyhania: 0, Chyby: 0, Vynechané: 0, Uplynutý čas: 0 s Výsledky: Spustené testy: 1, Zlyhania: 0, Chyby: 0, Vynechané: 0 [INFO] ---------------------------------------- -------------------------------- [INFO] STAVEBNÝ ÚSPECH [INFO] ---------- -------------------------------------------------- ------------
Konfigurácia je opäť veľmi jednoduchá.
Používame štandardný modul zabezpečený proti zlyhaniu a nakonfigurujeme ho tak, aby spúšťal iba integračné testy.
maven-failafe-plugin 2.12 org.apache.maven.surefire surefire-junit47 2.12 com.test.annotation.type.IntegrationTest integrácia-test ** / *. trieda
Konfigurácia používa štandardný cieľ spustenia na spustenie modulu zabezpečeného proti zlyhaniu počas fázy testovania integrácie zostavenia.
Nasledujúca konfigurácia zaisťuje spustenie iba testov integrácie.
com.test.annotation.type.IntegrationTest
Poskytovateľ JUnit musí byť opäť správne nakonfigurovaný.
org.apache.maven.surefire surefire-junit47 2.12
To je všetko!
Teraz môžeme spustiť celé zostavenie.
mvn čistá inštalácia
Tentokrát, rovnako ako pri teste jednotky, prebiehajú integračné testy počas fázy integračného testu.
-------------------------------------------------- ----- TESTY -------------------------------------------- ----------- Spustenie com.test.AnotherEmptyIntegrationTest Spustené testy: 1, Zlyhania: 0, Chyby: 0, Vynechané: 0, Uplynutý čas: 0,016 s Spustené testy com.test.EmptyIntegrationTest: 1, Zlyhania: 0, Chyby: 0, Vynechané: 0, Uplynutý čas: 0 s Výsledky: Priebeh testov: 2, Zlyhania: 0, Chyby: 0, Vynechané: 0
Ak chcete zistiť, aké ľahké je pridať pokrytie kódu k tejto metóde, vyskúšajte tento odkaz.
//johndobie.blogspot.co.uk/2012/05/easy-unit-and-integration-code-coverage.html
Pre úplnejší príklad, ktorý používa začína Tomcat a databázu.
svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/code-co ... mvn clean install -Ptomcat-embedded
Je to založené na tomto príklade
//johndobie.blogspot.com/2011/10/maven-integration-testing-and-spring.html
Tento príbeh, „Testy jednotiek a integrácie s kategóriami Maven a JUnit“, bol pôvodne publikovaný spoločnosťou JavaWorld.