Programovanie

Testy jednotiek a integrácie s kategóriami Maven a JUnit

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.

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