Napravite staklenku s Mavenom i zanemarite rezultate testa

1. Uvod

Ovaj kratki vodič pokazuje kako napraviti staklenku s Mavenom, a zanemariti rezultate testa.

Prema zadanim postavkama, Maven automatski izvodi jedinične testove tijekom izrade projekta. Međutim, rijetki su slučajevi kada se testovi mogu preskočiti i projekt moramo izgraditi bez obzira na rezultate ispitivanja.

2. Izgradnja projekta

Stvorimo jednostavan projekt u koji ćemo uključiti i mali testni slučaj:

javna klasa TestFail {@Test public void whenMessageAssigned_thenItIsNotNull () {String message = "hello there"; assertNotNull (poruka); }}

Izgradimo jar datoteku izvršavanjem sljedeće Mavenove naredbe:

mvn paket

To će rezultirati sastavljanjem izvora i generiranjem a maven-0.0.1-SNAPSHOT.jar datoteka u direktoriju / target.

Sada, promijenimo test malo, pa test počinje propadati.

@Test public void whenMessageAssigned_thenItIsNotNull () {String message = null; assertNotNull (poruka); }

Ovaj put, kada pokušavamo pokrenuti mvn paket naredba opet, izrada ne uspije i datoteka maven-0.0.1-SNAPSHOT.jar nije stvorena.

To znači, ako u našoj aplikaciji imamo neuspjeli test, ne možemo pružiti izvršnu datoteku ako test ne popravimo.

Pa kako možemo riješiti ovaj problem?

3. Argumenti Mavena

Maven ima svoje argumente za rješavanje ovog problema:

  • -Dmaven.test.failure.ignore = trueignorira bilo koji kvar koji se dogodi tijekom izvođenja testa
  • -Dmaven.test.skip = točno ne bi sastavio testove
  • -fn, -fae nikad ne uspije u izradi bez obzira na rezultate ispitivanja

Pokrenimo mvn paket -Dmaven.test.skip = točno naredbu i pogledajte rezultate:

[INFO] Testovi se preskaču. [INFO] IZGRADITI USPJEH

To znači da će se projekt graditi bez sastavljanja testova.

A sada pokrenimo mvn paket -Dmaven.test.failure.ignore = true naredba:

[INFO] Pokretanje testfail.TestFail [ERROR] whenMessageAssigned_thenItIsNotNull java.lang.AssertionError [INFO] BUILD SUCCESS

Naš jedinični test ne uspijeva tvrditi, ali je izrada uspješna.

Napokon, testirajmo -fn, -fae mogućnosti. Oba, paket -fn i paket -fae naredbe grade staklenka datoteku i proizvesti IZGRADITI USPJEH izlaz bez obzira na whenMessageAssigned_thenItIsNotNull () test neuspjeh.

U slučaju projekta s više modula -fn treba koristiti opciju. -fae nastavlja s modulom koji ima neuspjeli test, ali preskače sve ovisne module.

4. Maven Surefire dodatak

Još jedan prikladan način za postizanje našeg cilja je upotreba Mavenova dodatka Surefire.

Prošireni pregled dodatka Surefire potražite u ovom članku.

Da bismo ignorirali neuspjeh testa, jednostavno možemo postaviti testFailureIgnore svojstvo da pravi:

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

Sada, da vidimo izlaz paket naredba:

[INFO] T E S T S [INFO] Pokretanje testfail.TestFail [ERROR] Pokrenuti testovi: 1, neuspjesi: 1, pogreške: 0, preskočeni: 0, <<< FAILURE! - u testfail.TestFail

Iz rezultata tekućih testova možemo vidjeti TestFail razred propada. Ali gledajući dalje vidimo da je tamo i poruka BUILD SUCCESS te je sastavljena datoteka maven-0.0.1-SNAPSHOT.jar.

Ovisno o našoj potrebi, uopće možemo preskočiti izvođenje testova. Za to možemo zamijeniti testFailureIgnore podudaranje sa:

pravi

Ili postavite argument naredbenog retka -DskipTests. Ovo će sastaviti testne klase, ali u potpunosti preskočiti izvršavanje testa.

5. Zaključak

U ovom smo članku naučili kako graditi svoj projekt s Mavenom bez obzira na rezultate testa. Prošli smo kroz praktične primjere preskakanja neuspjelih testova ili isključivanja kompilacije testova u potpunosti.

Kao i obično, cjeloviti kôd za ovaj članak dostupan je na GitHub projektu.