Hopp over tester med Maven

1. Introduksjon

Hopp over tester er ofte en dårlig idé. Imidlertid er det noen situasjoner der det kan være nyttig - kanskje når vi utvikler ny kode og ønsker å kjøre mellombygg hvor testene ikke går eller kompilerer.

Bare i slike situasjoner kan vi hoppe over testene for å unngå overhead for å kompilere og kjøre dem. Vurder selvfølgelig at ikke kjøring av tester kan føre til dårlig kodingspraksis.

I denne raske opplæringen vil vi utforske alle mulige kommandoer og alternativer for å hoppe over tester ved hjelp av Maven.

2. Maven livssyklus

Før du går inn i detaljene om hvordan du hopper over tester, vi må forstå når tester blir samlet eller kjørt. I artikkelen om Maven mål og faser går vi dypere inn i begrepet Maven livssyklus, men for formålet med denne artikkelen er det viktig å vite at Maven kan:

  1. Ignorer tester
  2. Kompilere tester
  3. Kjør tester

I eksemplene våre bruker vi pakke fase, som inkluderer kompilering og kjøring av testene. Alternativene som er utforsket gjennom denne opplæringen, tilhører Maven Surefire Plugin.

3. Bruke kommandolinjeflagg

3.1. Hopp over testkompilering

La oss først se på et eksempel på en test som ikke kompilerer:

@Test offentlig annullere thisDoesntCompile () {baeldung; }

Når vi kjører kommandolinjekommandoen:

mvn-pakke

Vi får en feil:

[INFO] ------------------------------------------------------- -------------- [ERROR] COMPILATION FEIL: [INFO] --------------------------- ---------------------------------- [FEIL] / Brukere / baeldung / skip-tester / src / test / java / com / antmordel / skiptests / PowServiceTest.java: [11,9] ikke en uttalelse [INFO] 1 feil

La oss derfor utforske hvordan du hopper over kompileringsfasen for testens kilder. I Maven kan vi bruke maven.test.skip flagg:

mvn -Dmaven.test.skip-pakke

Som et resultat blir ikke testkildene kompilert og derfor ikke utført.

3.2. Hopp over testutførelsen

Som et andre alternativ, la oss se hvordan vi kan kompilere testmappen, men hoppe over kjøringsprosessen. Dette er nyttig i de tilfellene der vi ikke endrer signaturen til metodene eller klassene, men vi har endret forretningslogikken, og som et resultat brøt vi testene. La oss vurdere en konstruert testsak som den nedenfor, som alltid vil mislykkes:

@Test offentlig annullerer thisTestFails () {fail ("Dette er en mislykket testtilfelle"); }

Siden vi inkluderte uttalelsen mislykkes (), hvis vi driver pakke fase vil build mislykkes med feilen:

[FEIL] Feil: [FEIL] PowServiceTest.thisTestFails: 16 Dette er en mislykket testtilfelle [INFO] [FEIL] Testkjøring: 2, Feil: 1, Feil: 0, hoppet over: 0

La oss forestille oss at vi vil hoppe over å kjøre testene, men vi vil fortsatt kompilere dem. I dette tilfellet kan vi bruke -DskipTests flagg:

mvn -DskipTests-pakke

og pakkefasen vil lykkes. I Maven er det også et dedikert plugin for å kjøre integrasjonstester kalt maven failsafe plugin. De -DskipTests vil hoppe over utførelsen av både enhetstester (surefire) og integrasjonstester (failsafe). For å bare hoppe over integrasjonstestene, kan vi bestå -Skip systemegenskap.

Til slutt er det verdt å nevne at det nå utfasede flagget -Dmaven.test.skip.exec vil også kompilere testklassene, men vil ikke kjøre dem.

4. Bruke Maven Configuration

I tilfelle vi trenger å ekskludere kompilering eller kjøring av testene over lengre tid, kan vi endre pom.xml filen for å inkludere riktig konfigurasjon.

4.1. Hopp over testkompilering

Som vi gjorde i forrige avsnitt, la oss undersøke hvordan vi kan unngå å kompilere testmappen. I dette tilfellet bruker vi pom.xml fil. La oss legge til følgende eiendom:

 ekte 

Husk det Vi kan overstyre den verdien ved å legge til det motsatte flagget i kommandolinjen:

mvn -Dmaven.test.skip = falsk pakke

4.2. Hopp over testutførelsen

Igjen, som et andre trinn, la oss utforske hvordan vi kan bygge testmappen, men hoppe over testutførelsen ved hjelp av Maven-konfigurasjonen. For å gjøre det, må vi konfigurere Maven Surefire Plugin med en eiendom:

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

Maven eiendommen tests.skip er en egendefinert egenskap som vi tidligere har definert. Derfor kan vi overstyre det hvis vi ønsker å utføre testene:

mvn -Dtests.skip = falsk pakke

4. Konklusjon

I denne raske opplæringen har vi utforsket alle alternativene som Maven tilbyr for å hoppe over kompilering og / eller kjøring av testene.

Vi gikk gjennom Maven-kommandolinjealternativene og Maven-konfigurasjonsalternativene.


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