Byg en krukke med Maven, og ignorér testresultaterne

1. Introduktion

Denne hurtige guide viser, hvordan man bygger en krukke med Maven, mens man ignorerer testresultaterne.

Som standard kører Maven automatisk test af enheder, mens projektet bygges. Imidlertid, der er sjældne tilfælde, hvor testene kan springes over, og vi er nødt til at bygge projektet uanset testresultaterne.

2. Opbygning af projektet

Lad os oprette et simpelt projekt, hvor vi også inkluderer en lille test case:

public class TestFail {@Test public void whenMessageAssigned_thenItIsNotNull () {String message = "hej der"; assertNotNull (besked); }}

Lad os bygge en jar-fil ved at udføre følgende Maven-kommando:

mvn-pakke

Dette vil resultere i at kompilere kilderne og generere en maven-0.0.1-SNAPSHOT.jar fil under / target-biblioteket.

Lad os nu ændre testen lidt, så testen begynder at mislykkes.

@Test offentlig ugyldig nårMessageAssigned_thenItIsNotNull () {Strengmeddelelse = null; assertNotNull (besked); }

Denne gang, når vi prøver at køre mvn-pakke kommando igen, mislykkes build og filen maven-0.0.1-SNAPSHOT.jar oprettes ikke.

Det betyder, hvis vi har en fejlagtig test i vores applikation, kan vi ikke levere en eksekverbar fil, medmindre vi løser testen.

Så hvordan kan vi løse dette problem?

3. Maven argumenter

Maven har sine egne argumenter for at håndtere dette spørgsmål:

  • -Dmaven.test.failure.ignore = sandtignorerer enhver fejl, der opstår under testudførelsen
  • -Dmaven.test.skip = sandt ville ikke kompilere testene
  • -fn, -fae mislykkes aldrig bygningen uanset testresultater

Lad os køre mvn pakke -Dmaven.test.skip = sand kommando og se resultaterne:

[INFO] Test springes over. [INFO] BYGG SUCCES

Dette betyder, at projektet vil blive bygget uden at udarbejde testene.

Lad os nu køre mvn pakke -Dmaven.test.failure.ignore = sand kommando:

[INFO] Kører testfail.TestFail [ERROR] whenMessageAssigned_thenItIsNotNull java.lang.AssertionError [INFO] BUILD SUCCESS

Vores enhedstest mislykkes ved påstand, men bygningen er vellykket.

Lad os endelig teste -fn, -fae muligheder. Begge, pakke -fn og pakke -fae kommandoer bygger krukke arkiv og producere BYGG SUCCES output uanset whenMessageAssigned_thenItIsNotNull () test mislykkes.

I tilfælde af multimodulprojektet -fn mulighed skal bruges. -fae fortsætter med det modul, der har en fejlagtig test, men springer over alle de afhængige moduler.

4. Maven Surefire-plugin

En anden praktisk måde at nå vores mål er at bruge Mavens Surefire-plugin.

For en udvidet oversigt over Surefire-pluginet henvises til denne artikel.

For at ignorere test mislykkes kan vi simpelthen indstille testFailureIgnore ejendom til rigtigt:

 maven-surefire-plugin $ {maven.surefire.version} TestFail.java sandt 

Lad os nu se output af pakke kommando:

[INFO] T E S T S [INFO] Kører testfail.TestFail [FEJL] Testkørsel: 1, Fejl: 1, Fejl: 0, Springet over: 0, <<< FEJL! - i testfail.TestFail

Fra de kørende testoutput kan vi se TestFail klasse mislykkes. Men når man ser længere, ser vi, at meddelelsen BUILD SUCCESS også er der, og filen maven-0.0.1-SNAPSHOT.jar er kompileret.

Afhængigt af vores behov kan vi overhovedet springe over at køre testene. For det kan vi erstatte testFailureIgnore linje med:

rigtigt

Eller indstil kommandolinjeargumentet -DeskTests. Dette kompilerer testklasserne, men springer testudførelsen helt over.

5. Konklusion

I denne artikel lærte vi, hvordan vi bygger vores projekt med Maven uanset testresultaterne. Vi gennemgik de praktiske eksempler på at springe de manglende tests over eller udelukke kompilering af testene fuldstændigt.

Som sædvanlig er den komplette kode til denne artikel tilgængelig på GitHub-projektet.


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