Maven: nepouštět testy, ale jen překládat

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í.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *