Testovi jedinica i integracija s kategorijama Maven i JUnit

Ovaj primjer pokazuje kako podijeliti jedinstvene i integracijske testove pomoću kategorija Maven i JUnit.

Posebno je koristan za postojeće ispitne pakete i može se implementirati za nekoliko minuta.

Moj prethodni post pokazao je kako koristimo maven profil za razdvajanje cjelina i integracijskih testova.

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

Ovo je vrlo dobro pročitan post i sviđa mi se kako koristi zasebne direktorije. Međutim, ovaj primjer pokazuje mnogo jednostavniju tehniku ​​koja se lako može primijeniti na naslijeđene testne pakete.

Nudi većinu blagodati originala i ugodnije je smješten u svijetu Mavena.

Kod za primjer je ovdje.

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

Od JUnit-a 4.8 možete definirati vlastite kategorije za testove. To vam omogućuje označavanje i grupiranje testova.

Ovaj primjer pokazuje kako je lako razdvojiti jedinicu i test integracije pomoću bilješke @Catgegory.

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

Prvi korak u grupiranju testa pomoću kategorija je stvaranje sučelja markera.

Ovo će se sučelje koristiti za označavanje svih testova koje želite pokrenuti kao integracijske testove.

public interface IntegrationTest {} 

Dodajte bilješku o kategoriji na vrh svoje testne klase. Potrebno je ime vašeg novog sučelja.

import org.junit.experimental.categories.Category; @Category(IntegrationTest.class) public class ExampleIntegrationTest{ @Test public void longRunningServiceTest() throws Exception { } } 

Kategorije se mogu koristiti za označavanje klasa ili metoda. Stvarno po mom mišljenju trebali biste označiti samo razred.

Ako imate i jedinstvene i integracijske testove u jednoj klasi, podijelite ih.

Ljepota ovog rješenja je u tome što se zapravo ništa ne mijenja na strani jedinice za testiranje.

Jednostavno dodajemo određenu konfiguraciju dodatku Maven surefire kako bismo ignorirali bilo kakve integracijske testove.

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

Postoje 2 vrlo važna dijela. Prvo je konfiguriranje sigurne vatre za isključivanje svih integracijskih testova.

com.test.annotation.type.IntegrationTest 

Surefire će pokrenuti sve vaše testove, osim onih označenih kao integracijski test.

Drugi važan dio je osigurati da sigurni dodatak koristi ispravnog dobavljača JUnit-a. Davatelj usluga JUnit47 potreban je za ispravno otkrivanje kategorija.

  org.apache.maven.surefire surefire-junit47 2.12   

Da bismo bili sigurni da ovo ispravno funkcionira, možemo pokrenuti unit testove

mvn clean test 

Iz donjeg rezultata možete vidjeti da je pokrenut jedinstveni test, ali ne i test integracije.

------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.test.EmptyUnitTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ 

Opet je konfiguracija za to vrlo jednostavna.

Koristimo standardni dodatak za sigurnost i konfiguriramo ga za pokretanje samo integracijskih testova.

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

Konfiguracija koristi standardni cilj izvršenja za pokretanje sigurnosnog dodatka tijekom faze testiranja integracije gradnje.

Sljedeća konfiguracija osigurava pokretanje samo integracijskih testova.

com.test.annotation.type.IntegrationTest 

I opet, dobavljač JUnit mora biti ispravno konfiguriran.

  org.apache.maven.surefire surefire-junit47 2.12   

To je to!

Sada možemo pokrenuti cijelu gradnju.

mvn clean install 

Ovaj put, kao i jedinični test, integracijski testovi se izvode i tijekom faze integracijskog testa.

------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.test.AnotherEmptyIntegrationTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec Running com.test.EmptyIntegrationTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 

Pogledajte ovu vezu da biste vidjeli kako je jednostavno dodati pokrivenost kodom na ovaj način.

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

Za potpuniji primjer koji koristi pokreće Tomcat i bazu podataka.

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

Temelji se na ovom primjeru

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

Ovu priču, "Testovi jedinica i integracije s kategorijama Maven i JUnit" izvorno je objavio JavaWorld.