Výchozím nastavením Mavenu je, aby při kompilaci (mvn install) pouštěl testy. Při vývoji se někdy ovšem hodí, aby testy pouštěny nebyly (tj. byly puštěny na explicitní žádost před commitem, ale ne během ladění některé části).
Pro tyto účely je možné použít toto:
mvn install -Dmaven.test.skip=true
Další možností je vytvořit profil a využívat ten:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>${my.skip.test}</skip> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>test</id> <properties> <!-- pokud je aktivní tento profil nastav hodnotu této proměnné --> <my.skip.test>false</my.skip.test> </properties> </profile> </profiles> <properties> <!-- výchozí hodnoty proměnných (mohou být přepsané z profilů) --> <my.skip.test>true</my.skip.test> </properties>
Pokud tedy spustíte mvn install testy se nepouštějí. Pokud chcete testy spustit, použijte mvn install -Ptest
Nevýhodou je, že se testy nejen nepouštějí, ale ani nepřekládají (tj. programátor si nevšimne chyby při překladu).
Nyní jsem našel, že pokud místo skip použiji raději skipExec, testy budou přeloženy:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.3</version> <configuration> <skipExec>${my.skip.test}</skipExec> </configuration> </plugin>
Poznámka: je nutné uvést verzi surefire pluginu, protože starší verze tuto vlastnost nepodporovali a pluginy se standardně neaktualizují.