Bygg en krukke med Maven og ignorere testresultatene

1. Introduksjon

Denne hurtigveiledningen viser hvordan du bygger en krukke med Maven mens du ignorerer testresultatene.

Som standard kjører Maven enhetstester automatisk mens du bygger prosjektet. Derimot, det er sjeldne tilfeller når testene kan hoppes over, og vi må bygge prosjektet uavhengig av testresultatene.

2. Bygg prosjektet

La oss lage et enkelt prosjekt der vi også inkluderer en liten prøvesak:

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

La oss bygge en jar-fil ved å utføre følgende Maven-kommando:

mvn-pakke

Dette vil resultere i å samle kildene og generere en maven-0.0.1-SNAPSHOT.jar filen under / target-katalogen.

La oss endre testen litt, så testen begynner å mislykkes.

@Test offentlig ugyldig nårMessageAssigned_thenItIsNotNull () {Strengmelding = null; assertNotNull (melding); }

Denne gangen, når vi prøver å kjøre mvn-pakke kommandoen igjen, mislykkes bygningen, og filen maven-0.0.1-SNAPSHOT.jar opprettes ikke.

Dette betyr, hvis vi har en mislykket test i applikasjonen vår, kan vi ikke gi en kjørbar fil med mindre vi fikser testen.

Så hvordan kan vi løse dette problemet?

3. Maven Argumenter

Maven har sine egne argumenter for å håndtere dette problemet:

  • -Dmaven.test.failure.ignore = santignorerer eventuelle feil som oppstår under testutførelsen
  • -Dmaven.test.skip = sant ville ikke kompilere testene
  • -fn, -fae mislykkes aldri bygningen uavhengig av testresultatene

La oss kjøre mvn pakke -Dmaven.test.skip = true kommandoen og se resultatene:

[INFO] Testene hoppes over. [INFO] BYGG SUKSESS

Dette betyr at prosjektet vil bli bygget uten å teste testene.

La oss nå kjøre mvn pakke -Dmaven.test.failure.ignore = sant kommando:

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

Enhetstesten mislykkes ved påstand, men byggingen er vellykket.

Til slutt, la oss teste -fn, -fae alternativer. Både, pakke -fn og pakke -fae kommandoer bygge krukke fil og produsere BYGG SUKSESS utgang uavhengig av whenMessageAssigned_thenItIsNotNull () stryk.

I tilfelle multimodulprosjektet -fn alternativet skal brukes. -fae fortsetter med modulen som har en mislykket test, men hopper over alle avhengige moduler.

4. Maven Surefire Plugin

En annen praktisk måte å nå målet vårt er å bruke Mavens Surefire-plugin.

For en utvidet oversikt over Surefire-pluginet, se denne artikkelen.

For å ignorere test mislykkes kan vi ganske enkelt stille inn testFailureIgnore eiendom til ekte:

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

La oss nå se resultatet av pakke kommando:

[INFO] T E S T S [INFO] Kjører testfail.TestFail [FEIL] Testkjøring: 1, Feil: 1, Feil: 0, Hoppet over: 0, <<< FEIL! - i testfail.TestFail

Fra de løpende testutgangene kan vi se Stryk klassen svikter. Men når vi ser lenger, ser vi at BUILD SUCCESS-meldingen også er der, og filen maven-0.0.1-SNAPSHOT.jar er kompilert.

Avhengig av vårt behov, kan vi i det hele tatt hoppe over å kjøre testene. For det kan vi erstatte testFailureIgnore linje med:

ekte

Eller angi kommandolinjeargumentet -DskipTests. Dette vil sammenstille testklassene, men hoppe over testutførelsen helt.

5. Konklusjon

I denne artikkelen lærte vi hvordan vi skulle bygge prosjektet vårt med Maven uavhengig av testresultatene. Vi gikk gjennom de praktiske eksemplene på å hoppe over de ikke-godkjente testene eller ekskludere kompilering av testene helt.

Som vanlig er den komplette koden for denne artikkelen tilgjengelig på GitHub-prosjektet.


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