Testovanie integrácie s doplnkom Maven Cargo

Veľmi častou potrebou v životnom cykle projektu je nastavenie testovania integrácie. Našťastie má Maven zabudovanú podporu pre tento presný scenár s nasledujúcimi fázami životného cyklu predvoleného zostavenia (z dokumentácie Maven):

  • predintegračný test: Pred vykonaním integračných testov vykonajte činnosti potrebné. Môže to zahŕňať napríklad nastavenie požadovaného prostredia.
  • integračný test: V prípade potreby spracujte a nasadte balík do prostredia, kde je možné spustiť integračné testy.
  • post-integračný test: Vykonajte činnosti požadované po vykonaní integračných testov. To môže zahŕňať čistenie životného prostredia.

Najskôr je nakonfigurovaný plugin maven-surefire integračné testy sú vylúčené zo štandardného životného cyklu zostavenia:

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

Vylúčenia sa robia prostredníctvom výrazov cesty v štýle mravcov, takže všetky integračné testy musia nasledovať tento vzor a končiť „IntegrationTest.java“.

Ďalej cargo-maven2-plugin používa sa, pretože Cargo prichádza s prvotriednou podporou zabudovaných webových serverov po vybalení z krabice. Samozrejme, ak prostredie servera vyžaduje špecifickú konfiguráciu, cargo tiež vie, ako vytvoriť server z archivovaného balíka a ako ho nasadiť na externý server.

 org.codehaus.cargo cargo-maven2-plugin 1.4.8 jetty8x vložený 8080 

Je definovaný zabudovaný webový server Jetty 8, ktorý pracuje na porte 8080.

V novšej verzii nákladu (1.1.0 vyššie) je predvolená hodnota the počkaj vlajka bol zmenený na nepravda, pre náklad: štart. Tento cieľ by sa mal použiť iba na spustenie integračných testov a je viazaný na životný cyklus Maven; pre rozvoj, náklad: beh cieľ by sa mal vykonať namiesto toho - čo má počkaj = pravda.

Za účelom balíček fáza fázy generovania a nasaditeľný vojna súboru, obal projektu musí byť: vojna.

Ďalej nový integráciaMaven profil je vytvorený na umožnenie vykonania testov integrácie iba keď je tento profil aktívny, a nie ako súčasť životného cyklu štandardného zostavenia.

  integrácia ... 

Práve tento profil bude obsahovať všetku zvyšnú konfiguráciu.

Teraz je server Jetty nakonfigurovaný na začať v predintegračný test fáza a zastav v post-integračný test fáza.

 org.codehaus.cargo cargo-maven2-plugin falošný štartovací server predintegračný test štart stop server po integrácii testovací stop 

To zaisťuje náklad: štart cieľ a náklad: zastávka ciele sa splnia pred a po integračný test fáza. Všimnite si, že pretože existujú dvaja jednotlivci exekúcia definície, id prvok musí byť prítomný (a odlišný) v oboch, aby mohol Maven prijať konfiguráciu.

Ďalšie, maven-surefire-plugin konfigurácia musí byť prepísaná vo vnútri integrácia profilu, takže integračné testy, ktoré boli vylúčené v predvolenom životnom cykle, budú teraz v cene a spustiť:

  org.apache.maven.plugins test integrácie maven-surefire-plugin-test žiadny ** / * IntegrationTest.java 

Za zmienku stojí niekoľko vecí:

1. The test cieľ maven-surefire-plugin sa vykonáva v integračný test fáza; v tomto okamihu už je Jetty spustené s nasadeným projektom, takže integračné testy by mali bežať bez problémov.

2. Integračné testy sú teraz v cene pri exekúcii. Aby sa to dosiahlo, sú tiež prepísané vylúčenia - je to tak kvôli spôsobu, akým Maven spracováva prepísané konfigurácie doplnkov vo vnútri profilov. Základná konfigurácia nie je úplne prepísaná, ale je rozšírená o nové konfiguračné prvky vo vnútri profilu. Z tohto dôvodu originál konfigurácia, ktorá na prvom mieste vylúčila integračné testy, je stále v profile a je potrebné ju prepísať, inak by to bolo v rozpore s konfigurácia a testy by stále nebežali.

3. Upozorňujeme, že keďže existuje iba jeden prvok existuje nie je potrebné id byť definovaný.

Teraz môže bežať celý proces:

mvn clean install -Integrácia

Záver

Konfigurácia programu Maven krok za krokom pokrýva celý proces nastavenia procesu integrácie ako súčasť životného cyklu projektu.

Spravidla je to nastavené tak, aby fungovalo v prostredí kontinuálnej integrácie, najlepšie po každom potvrdení. Ak na serveri CI už server beží a spotrebováva porty, potom bude musieť konfigurácia nákladu čeliť tomuto scenáru, ktorému sa budem venovať v budúcom príspevku.

Ak chcete získať úplnú konfiguráciu tohto mechanizmu, pozrite si projekt REST GitHub.

V tomto článku nájdete aj osvedčené postupy štruktúrovania projektu a organizácie testov jednotiek a integrácie.


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