Spring spring over tests med Maven

1. Introduktion

Spring over tests er ofte en dårlig idé. Der er dog nogle situationer, hvor det kan være nyttigt - måske når vi udvikler ny kode og vil køre mellemliggende builds, hvor testene ikke passerer eller kompilerer.

Kun i denne slags situationer springer vi måske over testene for at undgå omkostningerne ved at kompilere og køre dem. Overvej naturligvis, at ikke kørsel af test kan føre til dårlig kodning.

I denne hurtige vejledning udforsker vi alle mulige kommandoer og muligheder for at springe test over ved hjælp af Maven.

2. Maven livscyklus

Før du går ind i detaljerne om, hvordan du springer prøver over, vi skal forstå, når test kompileres eller køres. I artiklen om Maven-mål og -faser går vi dybere ind i begrebet Maven-livscyklus, men med henblik på denne artikel er det vigtigt at vide, at Maven kan:

  1. Ignorer test
  2. Kompilér test
  3. Kør tests

I vores eksempler bruger vi pakke fase, som inkluderer kompilering og kørsel af testene. De muligheder, der er undersøgt i hele denne tutorial, tilhører Maven Surefire Plugin.

3. Brug af kommandolinjeflag

3.1. Spring over testkompilering

Lad os først se på et eksempel på en test, der ikke kompilerer:

@Test offentlig annullerer thisDoesntCompile () {baeldung; }

Når vi kører kommandolinjekommandoen:

mvn-pakke

Vi får en fejl:

[INFO] ------------------------------------------------------- -------------- [FEJL] COMPILATION FEJL: [INFO] --------------------------- ---------------------------------- [FEJL] / Brugere / baeldung / skip-tests / src / test / java / com / antmordel / skiptests / PowServiceTest.java: [11,9] ikke en erklæring [INFO] 1 fejl

Lad os derfor udforske hvordan man springer kompileringsfasen over til testets kilder. I Maven kan vi bruge maven.test.skip flag:

mvn -Dmaven.test.skip pakke

Som et resultat kompileres testkilderne ikke og udføres derfor ikke.

3.2. Spring over testudførelsen

Som en anden mulighed, lad os se hvordan vi kan kompilere testmappen, men springe kørsprocessen over. Dette er nyttigt i de tilfælde, hvor vi ikke ændrer signaturen på metoderne eller klasserne, men vi har ændret forretningslogikken, og som et resultat brød vi testene. Lad os overveje en konstrueret testsag som den nedenfor, som altid vil mislykkes:

@Test offentligt annullerer thisTestFails () {fail ("Dette er en mislykket testsag"); }

Da vi inkluderede udsagnet svigte(), hvis vi kører pakke fase mislykkes build med fejlen:

[FEJL] Fejl: [FEJL] PowServiceTest.thisTestFails: 16 Dette er en mislykket testtilfælde [INFO] [FEJL] Testkørsel: 2, Fejl: 1, Fejl: 0, springet over: 0

Lad os forestille os, at vi vil springe over at køre testene, men vi vil stadig kompilere dem. I dette tilfælde kan vi bruge -DeskTests flag:

mvn -DeskTests-pakke

og pakkefasen vil lykkes. Også i Maven er der et dedikeret plugin til at køre integrationstest kaldet maven failsafe plugin. Det -DeskTests springer over udførelsen af ​​både enhedstest (surefire) og integrationstest (failsafe). For bare at springe over integrationstestene, kan vi bestå -Skibe systemegenskab.

Endelig er det værd at nævne, at det nu forældede flag -Dmaven.test.skip.exec vil også kompilere testklasserne, men vil ikke køre dem.

4. Brug af Maven-konfiguration

I tilfælde af at vi har brug for at udelukke kompilering eller kørsel af testene i længere tid, kan vi ændre pom.xml fil for at inkludere den korrekte konfiguration.

4.1. Spring over testkompilering

Som vi gjorde i det foregående afsnit, lad os undersøge hvordan vi kan undgå at kompilere testmappen. I dette tilfælde bruger vi pom.xml fil. Lad os tilføje følgende egenskab:

 rigtigt 

Husk det Vi kan tilsidesætte denne værdi ved at tilføje det modsatte flag i kommandolinjen:

mvn -Dmaven.test.skip = falsk pakke

4.2. Spring over testudførelsen

Igen, som et andet trin, lad os undersøge hvordan vi kan oprette testmappen, men springe testudførelsen over ved hjælp af Maven-konfigurationen. For at gøre det skal vi konfigurere Maven Surefire Plugin med en egenskab:

 ægte org.apache.maven.plugins maven-surefire-plugin 2.22.1 $ {tests.skip} 

Maven ejendommen tests.skib er en brugerdefineret egenskab, som vi tidligere har defineret. Derfor kan vi tilsidesætte det, hvis vi vil udføre testene:

mvn -Dtests.skip = falsk pakke

4. Konklusion

I denne hurtige vejledning har vi undersøgt alle de alternativer, som Maven tilbyder for at springe over kompilering og / eller kørsel af testene.

Vi gik gennem Maven-kommandolinjemulighederne og Maven-konfigurationsindstillingerne.


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