Testiranje integracije s dodatkom Maven Cargo

Vrlo česta potreba u životnom ciklusu projekta je postavljanje integracijskog testiranja. Srećom, Maven ima ugrađenu podršku za ovaj točan scenarij, sa sljedećim fazama zadanog životnog ciklusa gradnje (iz Mavenove dokumentacije):

  • test prije integracije: Izvršite potrebne radnje prije izvođenja integracijskih testova. To može uključivati ​​stvari poput postavljanja potrebnog okruženja.
  • integracija-test: Po potrebi obradite i rasporedite paket u okruženje u kojem se mogu izvoditi integracijski testovi.
  • test nakon integracije: Izvršite radnje potrebne nakon izvršenih integracijskih testova. To može uključivati ​​čišćenje okoliša.

Prvo je dodatak maven-surefire-a konfiguriran tako da integracijski testovi su isključeni iz standardnog životnog ciklusa izrade:

 org.apache.maven.plugins maven-surefire-plugin 2.17 ** / * IntegrationTest.java 

Izuzimanja se vrše putem izraza puta u stilu mrava, tako da svi testovi integracije moraju slijediti ovaj obrazac i završiti s “IntegrationTest.java“.

Dalje, cargo-maven2-dodatak koristi se, jer Cargo dolazi s vrhunskom podrškom za ugrađene web poslužitelje. Naravno, ako poslužiteljsko okruženje zahtijeva određenu konfiguraciju, Cargo također zna kako stvoriti poslužitelj iz arhiviranog paketa, kao i rasporediti ga na vanjski poslužitelj.

 org.codehaus.cargo cargo-maven2-plugin 1.4.8 jetty8x ugrađen 8080 

Definiran je ugrađeni Jetty 8 web poslužitelj koji preslušava na priključku 8080.

U novijoj verziji tereta (1.1.0 naviše), zadana vrijednost the čekati zastava je promijenjen u lažno, za teret: start. Ovaj bi se cilj trebao koristiti samo za pokretanje integracijskih testova i vezan je za Mavenov životni ciklus; za razvoj, teret: trčati umjesto toga treba izvršiti cilj - što jest čekati = istina.

Da bi se paket maven faza za generiranje a rasporediv rat datoteka, pakiranje projekta mora biti: rat.

Dalje, novi integracijaMaven profil stvoren je da omogući pokretanje integracijskih testova samo kada je ovaj profil aktivan, a ne kao dio standardnog životnog ciklusa izrade.

  integracija ... 

Ovaj će profil sadržavati svu preostalu konfiguraciju.

Sada je Jetty poslužitelj konfiguriran na početak u test prije integracije faza i Stop u test nakon integracije faza.

 org.codehaus.cargo cargo-maven2-plugin lažni start-poslužitelj pre-integracija-test start stop-server nakon integracije-test stop 

To osigurava teret: start cilj i teret: zaustaviti ciljevi će se izvršiti prije i poslije integracija-test faza. Imajte na umu da zato što postoje dvije osobe izvršenje definicije, iskaznica element mora biti prisutan (i različit) u oba, kako bi Maven mogao prihvatiti konfiguraciju.

Sljedeći, maven-surefire-plugin konfiguraciju treba nadjačati unutar integracija profila, tako da će sada biti integracijski testovi koji su izuzeti u zadanom životnom ciklusu uključeni i pokrenite:

  org.apache.maven.plugins maven-surefire-plugin integracija-test test nema ** / * IntegrationTest.java 

Nekoliko je stvari vrijednih pažnje:

1. The test cilj maven-surefire-plugin izvršava se u integracija-test faza; u ovom je trenutku Jetty već pokrenut s implementiranim projektom, tako da bi integracijski testovi trebali raditi bez problema.

2. Integracijski testovi su sada uključeni u izvršenju. Da bi se to postiglo, izuzeća su također poništena - to je zato što način na koji Maven obrađuje nadjačane konfiguracije dodataka unutar profila. Osnovna konfiguracija nije u potpunosti nadjačana, već je povećana novim elementima konfiguracije unutar profila. Zbog ovoga original konfiguracija, koja je u prvom redu isključila integracijske testove, još uvijek je prisutna u profilu i treba je nadjačati ili bi bila u sukobu s konfiguracije i testovi se i dalje ne bi izvodili.

3. Imajte na umu da, budući da postoji samo jedan element, postoji nema potrebe za iskaznica da se definira.

Sada se cijeli postupak može pokrenuti:

mvn čista instalacija -Pintegracija

Zaključak

Korak po korak konfiguracije Mavena pokriva cijeli postupak postavljanja procesa integracije kao dijela životnog ciklusa projekta.

Obično se ovo postavlja da se izvodi u okruženju kontinuirane integracije, po mogućnosti nakon svakog urezivanja. Ako CI poslužitelj već ima poslužitelj koji izvodi i troši priključke, tada će se konfiguracija tereta morati nositi s tim scenarijem, koji ću opisati u budućem postu.

Potpuno pokrenutu konfiguraciju ovog mehanizma potražite u projektu REST GitHub.

U ovom članku potražite i najbolje prakse strukturiranja projekta i organiziranja jedinstvenih i integracijskih testova.


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