Programování

Testy jednotek a integrace s kategoriemi Maven a JUnit

Tento příklad ukazuje, jak rozdělit testy jednotky a integrace pomocí kategorií Maven a JUnit.

Je to obzvláště užitečné pro stávající testovací sady a lze jej implementovat během několika minut.

Můj předchozí příspěvek ukázal, jak můžeme použít profil maven k rozdělení testů jednotek a integrací.

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

Toto byl velmi dobře přečtený příspěvek a líbí se mi, jak používá samostatné adresáře. Tento příklad však ukazuje mnohem jednodušší techniku, kterou lze snadno použít na starší testovací sady.

Nabízí většinu výhod originálu a sedí pohodlněji ve světě Maven.

Kód pro příklad je zde.

svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/categor ... mvn clean install 

Od JUnit 4.8 můžete definovat své vlastní kategorie pro testy. To vám umožní označit a seskupit testy.

Tento příklad ukazuje, jak snadné je oddělit test jednotky a integrace pomocí anotace @Catgegory.

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

Prvním krokem při seskupování testu pomocí kategorií je vytvoření rozhraní značek.

Toto rozhraní se použije k označení všech testů, které chcete spustit jako integrační testy.

veřejné rozhraní IntegrationTest {} 

Přidejte anotaci kategorie na začátek testovací třídy. Převezme název vašeho nového rozhraní.

importovat org.junit.experimental.categories.Category; @Category (IntegrationTest.class) veřejná třída ExampleIntegrationTest {@Test public void longRunningServiceTest () vyvolá výjimku {}} 

Kategorie lze použít k označení tříd nebo metod. Opravdu podle mého názoru byste měli označit pouze třídu.

Pokud máte testy jednotky i integrace v jedné třídě, rozdělte ji.

Krása tohoto řešení spočívá v tom, že se ve skutečnosti nezmění nic pro testovací stránku věci.

Jednoduše přidáme nějakou konfiguraci do pluginu maven surefire, aby ignoroval všechny integrační testy.

 org.apache.maven.plugins maven-surefire-plugin 2.11 org.apache.maven.surefire surefire-junit47 2,12 ** / *. třída com.test.annotation.type.IntegrationTest 

Existují 2 velmi důležité části. Prvním z nich je konfigurace surefire, aby se vyloučily všechny testy integrace.

com.test.annotation.type.IntegrationTest 

Surefire spustí všechny vaše testy, kromě testů označených jako test integrace.

Další důležitou součástí je zajistit, aby plugin surefire používal správného poskytovatele JUnit. Poskytovatel JUnit47 je potřebný ke správné detekci kategorií.

  org.apache.maven.surefire surefire-junit47 2.12 

Abychom se ujistili, že to funguje správně, můžeme spustit testy jednotky

mvn čistý test 

Z výstupu níže vidíte, že je spuštěn test jednotky, ale ne test integrace.

-------------------------------------------------- ----- TESTY -------------------------------------------- ----------- Spuštění com.test.EmptyUnitTest Provedení testů: 1, selhání: 0, chyby: 0, přeskočení: 0, uplynulý čas: 0 s Výsledky: Provedení testů: 1, poruchy: 0, Chyby: 0, Přeskočeno: 0 [INFO] ---------------------------------------- -------------------------------- [INFO] BUILD SUCCESS [INFO] ---------- -------------------------------------------------- ------------ 

Konfigurace je opět velmi jednoduchá.

Používáme standardní modul zabezpečený proti selhání a nakonfigurujeme jej tak, aby spouštěl pouze integrační testy.

 maven-failafe-plugin 2.12 org.apache.maven.surefire surefire-junit47 2.12 com.test.annotation.type.IntegrationTest integrační test ** / *. třída 

Konfigurace používá standardní cíl spuštění ke spuštění modulu zabezpečeného proti selhání během fáze testování integrace sestavení.

Následující konfigurace zajišťuje, že jsou spuštěny pouze integrační testy.

com.test.annotation.type.IntegrationTest 

Poskytovatel JUnit musí být znovu správně nakonfigurován.

  org.apache.maven.surefire surefire-junit47 2.12 

A je to!

Nyní můžeme spustit celé sestavení.

mvn čistá instalace 

Tentokrát, stejně jako běžící test jednotky, probíhají integrační testy během fáze integračního testu.

-------------------------------------------------- ----- TESTY -------------------------------------------- ----------- Spouštění testů com.test.AnotherEmptyIntegrationTest: 1, selhání: 0, chyby: 0, přeskočení: 0, uplynulý čas: 0,016 s Spuštění testu com.test.EmptyIntegrationTest: 1, Selhání: 0, Chyby: 0, Přeskočeno: 0, Uplynulý čas: 0 s Výsledky: Provedení testů: 2, Selhání: 0, Chyby: 0, Přeskočeno: 0 

Chcete-li zjistit, jak snadné je do této metody přidat pokrytí kódem, podívejte se na tento odkaz.

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

Pro úplnější příklad, který používá začíná Tomcat a databázi.

svn co //designbycontract.googlecode.com/svn/trunk/examples/maven/code-co ... mvn clean install -Ptomcat-embedded 

Vychází z tohoto příkladu

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

Tento příběh, „Unit and Integration Tests With Maven and JUnit Categories“, původně publikoval JavaWorld.

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