Preskakanje testova s ​​Mavenom

1. Uvod

Preskakanje testova često je loša ideja. Međutim, postoje neke situacije u kojima bi to moglo biti korisno - možda kada razvijamo novi kôd i želimo pokretati međukomponente u kojima testovi ne prolaze ili se ne prevode.

Samo u ovakvim situacijama, mogli bismo preskočiti testove kako bismo izbjegli općenito sastavljanje i pokretanje. Naravno, uzmite u obzir da neizvođenje testova može dovesti do loših praksi kodiranja.

U ovom ćemo brzom vodiču istražiti sve moguće naredbe i opcije za preskakanje testova pomoću Mavena.

2. Maven životni ciklus

Prije ulaska u detalje kako preskočiti testove, moramo razumjeti kada se testovi sastavljaju ili izvode. U članku o Mavenovim ciljevima i fazama ulazimo dublje u koncept Mavenovog životnog ciklusa, ali u svrhu ovog članka važno je znati da Maven može:

  1. Zanemari testove
  2. Sastaviti testove
  3. Pokrenite testove

U našim ćemo primjerima koristiti paket faza, koja uključuje sastavljanje i izvođenje testova. Opcije istražene u ovom vodiču pripadaju dodatku Maven Surefire.

3. Korištenje zastavica naredbenog retka

3.1. Preskakanje testne kompilacije

Prvo, pogledajmo primjer testa koji se ne sastavlja:

@Test public void thisDoesntCompile () {baeldung; }

Kada pokrenemo naredbu naredbenog retka:

mvn paket

Dobit ćemo pogrešku:

[INFO] ------------------------------------------------ -------------- [POGREŠKA] POGREŠKA PRIKLJUČENJA: [INFO] --------------------------- ---------------------------------- [POGREŠKA] / Users / baeldung / skip-tests / src / test / java / com / antmordel / skiptests / PowServiceTest.java: [11,9] nije izjava [INFO] 1 pogreška

Stoga, istražimo kako preskočiti fazu sastavljanja za izvore testa. U Mavenu možemo koristiti maven.test.skip zastava:

mvn -Dmaven.test.skip paket

Kao rezultat, ispitni izvori se ne sastavljaju i, prema tome, ne izvršavaju.

3.2. Preskakanje izvršenja testa

Kao drugu mogućnost, pogledajmo kako možemo sastaviti testnu mapu, ali preskočiti postupak pokretanja. Ovo je korisno za one slučajeve u kojima ne mijenjamo potpis metoda ili klasa, ali smo promijenili poslovnu logiku i kao rezultat toga razbili smo testove. Razmotrimo izmišljeni testni slučaj poput ovog u nastavku, koji uvijek neće uspjeti:

@Test public void thisTestFails () {fail ("Ovo je neuspjeli testni slučaj"); }

Budući da smo uvrstili izjavu iznevjeriti(), ako pokrenemo paket faze, gradnja neće uspjeti s pogreškom:

[POGREŠKA] Kvarovi: [POGREŠKA] PowServiceTest.thisTestFails: 16 Ovo je neuspjeli testni slučaj [INFO] [POGREŠKA] Testovi: 2, Kvarovi: 1, Pogreške: 0, preskočeni: 0

Zamislimo da želimo preskočiti izvođenje testova, ali ipak ih želimo sastaviti. U ovom slučaju možemo koristiti -DskipTests zastava:

mvn -DskipTests paket

i faza paketa će uspjeti. Također, u Mavenu postoji namjenski dodatak za izvođenje testova integracije koji se naziva dodatak Maven failsafe. The -DskipTests preskočit će izvršavanje i jediničnih testova (sigurni) i integracijskih testova (siguran). Kako bismo samo preskočili integracijske testove, možemo proći -DskipITs svojstvo sustava.

Na kraju, vrijedno je spomenuti da je zastarjela zastava -Dmaven.test.skip.exec također će sastaviti test klase, ali ih neće izvoditi.

4. Korištenje Maven Configuration

U slučaju da moramo isključiti sastavljanje ili pokretanje testova na dulje vremensko razdoblje, možemo izmijeniti pom.xml datoteku kako bi se uključila ispravna konfiguracija.

4.1. Preskakanje testne kompilacije

Kao što smo učinili u prethodnom odjeljku, ispitajmo kako možemo izbjeći sastavljanje mapu za testiranje. U ovom ćemo slučaju koristiti pom.xml datoteka. Dodajmo sljedeće svojstvo:

 pravi 

Imajte na umu da tu vrijednost možemo nadjačati dodavanjem suprotne zastavice u naredbeni redak:

mvn -Dmaven.test.skip = lažni paket

4.2. Preskakanje izvršenja testa

Kao drugi korak, istražimo kako možemo izgraditi test mapu, ali preskočiti izvršenje testa pomoću konfiguracije Maven. Da bismo to učinili, moramo Maven Surefire dodatak konfigurirati sa svojstvom:

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

Imanje Maven testovi.skop je prilagođeno svojstvo koje smo prethodno definirali. Stoga ga možemo nadjačati ako želimo izvršiti testove:

mvn -Dtests.skip = lažni paket

4. Zaključak

U ovom smo brzom vodiču istražili sve alternative koje Maven nudi kako bismo preskočili sastavljanje i / ili pokretanje testova.

Prošli smo kroz opcije naredbenog retka Maven i opcije konfiguracije Maven.