Integrációs tesztelés a Maven Cargo pluginnel

A projekt életciklusának nagyon gyakori igénye az integrációs tesztelés beállítása. Szerencsére a Maven beépítette ezt a pontos forgatókönyvet, az alapértelmezett összeállítás életciklusának következő szakaszaival (a Maven dokumentációjából):

  • integráció előtti teszt: Végezze el az integrációs tesztek végrehajtása előtt szükséges műveleteket. Ez magában foglalhat olyan dolgokat, mint a szükséges környezet beállítása.
  • integrációs teszt: Feldolgozza és szükség esetén telepítse a csomagot olyan környezetbe, ahol integrációs tesztek futtathatók.
  • integráció utáni teszt: Végezze el az integrációs tesztek végrehajtása után szükséges műveleteket. Ez magában foglalhatja a környezet tisztítását.

Először a maven-surefire-plugint úgy konfigurálják, hogy az integrációs tesztek nem tartoznak ide a standard gyártási életciklusból:

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

A kizárások hangya stílusú útkifejezéseken keresztül történnek, ezért minden integrációs tesztnek ezt a mintát kell követnie és azzal kell végződnie „IntegrationTest.java“.

Ezután a cargo-maven2-plugin használják, mivel a Cargo csúcsminőségű, dobozon kívüli támogatással rendelkezik a beágyazott webszerverekhez. Természetesen, ha a kiszolgálókörnyezet speciális konfigurációt igényel, akkor a cargo tudja, hogyan kell a kiszolgálót archivált csomagból felépíteni, valamint külső szerverre telepíteni.

 org.codehaus.cargo cargo-maven2-plugin 1.4.8 móló8x beágyazott 8080 

Meg van határozva egy beágyazott Jetty 8 webszerver, amely a 8080-as porton hallgat.

A rakomány újabb verziójában (1.1.0 felfelé) az alapértelmezett értéke a várjon zászló megváltozott hamis, mert rakomány: kezdet. Ezt a célt csak integrációs tesztek futtatására szabad felhasználni, és a Maven életciklusához van kötve; fejlesztéshez az rakomány: futás célt kell végrehajtani helyettük - aminek van várjon = igaz.

Annak érdekében, hogy a csomag maven fázis a bevethető háború dosszié, a projekt csomagolásának: háború.

Ezután egy új integrációMaven profil az integrációs tesztek futtatásához jön létre csak amikor ez a profil aktív, és nem része a normál összeállítás életciklusának.

  integráció ... 

Ez a profil tartalmazza az összes fennmaradó konfigurációt.

Most a Jetty kiszolgáló konfigurálva van Rajt ban,-ben integráció előtti teszt fázis és álljon meg ban,-ben integráció utáni teszt fázis.

 org.codehaus.cargo cargo-maven2-plugin false start-server pre-integráció-teszt start stop-kiszolgáló integráció-teszt stop 

Ez biztosítja a rakomány: kezdet cél és rakomány: megáll célok végrehajtása a. előtt és után integrációs teszt fázis. Vegye figyelembe, hogy mivel két egyén van végrehajtás meghatározások, a id elemnek jelen kell lennie (és másként) mindkettőben, hogy Maven elfogadja a konfigurációt.

Következő, maven-surefire-plugin A konfigurációt felül kell írni a integráció profilt, így az alapértelmezett életciklusban kizárt integrációs tesztek most is megtörténnek beleértve és fuss:

  org.apache.maven.plugins maven-surefire-plugin integrációs teszt teszt nincs ** / * IntegrationTest.java 

Néhány dolgot érdemes megjegyezni:

1. A teszt célja a maven-surefire-plugin ben kivégzik integrációs teszt fázis; ezen a ponton a Jetty már elindult a telepített projekttel, így az integrációs teszteknek gond nélkül kell futniuk.

2. Az integrációs tesztek most vannak beleértve a kivégzésben. Ennek elérése érdekében a kizárásokat is felülbírálják - ez azért van így, mert Maven a profilok belső felületi plugin-konfigurációit kezeli. Az alapkonfigurációt nem teljesen felülírják, inkább kiegészítik a profil belsejében található új konfigurációs elemekkel. Emiatt az eredeti konfiguráció, amely eleve kizárta az integrációs teszteket, továbbra is jelen van a profilban, és felül kell írni, különben ütközne a konfiguráció és a tesztek továbbra sem futnak.

3. Vegye figyelembe, hogy mivel csak egyetlen van elem, van nincs szükség egy id meg kell határozni.

Most a teljes folyamat futtatható:

mvn clean install -Pintegráció

Következtetés

A Maven lépésről lépésre történő konfigurálása lefedi az integrációs folyamat beállításának teljes folyamatát a projekt életciklusának részeként.

Általában ez úgy van beállítva, hogy folyamatos integrációs környezetben fusson, lehetőleg minden elkötelezettség után. Ha a CI-kiszolgálónak már van olyan kiszolgálója, amely fut és portokat fogyaszt, akkor a rakománykonfigurációnak ezt a forgatókönyvet kell kezelnie, amelyet egy későbbi bejegyzésemben tárgyalok.

A mechanizmus teljes működésű konfigurációjához nézze meg a REST GitHub projektet.

Nézze meg ezt a cikket a projekt felépítésével, az egység és az integrációs tesztek megszervezésével kapcsolatos legjobb gyakorlatokkal kapcsolatban is.