Ho trovato il modo più semplice per saltare solo i test infallibili è configurare infallibile ( ma non sicuro ) come segue:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<!-- skips surefire tests without skipping failsafe tests.
Property value seems to magically default to false -->
<skipTests>${skip.surefire.tests}</skipTests>
</configuration>
</plugin>
Ciò consente di eseguire mvn verify -Dskip.surefire.tests
e solo i test infallibili, non sicuri, verranno saltati; eseguirà anche tutte le altre fasi necessarie, tra cui la pre-integrazione e la post-integrazione, e realizzerà anche l' verify
obiettivo che è necessario per far fallire effettivamente la tua build maven se i test di integrazione falliscono.
Si noti che questo ridefinisce la proprietà utilizzata per specificare che i test devono essere saltati, quindi se si fornisce il canonico -DskipTests=true
, infallibile lo ignorerà ma fail-safe lo rispetterà, il che potrebbe essere inaspettato, soprattutto se si hanno build / utenti esistenti che specificano già quel flag. Una semplice soluzione sembra essere l'impostazione predefinita skip.surefire.tests
del valore di skipTests
nella <properties>
sezione del pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Se necessario, è possibile fornire un parametro analogo chiamato skip.failsafe.tests
per fail-safe, tuttavia non l'ho trovato necessario, poiché i test unitari di solito vengono eseguiti in una fase precedente e se si desidera eseguire test unitari ma non test di integrazione, eseguirei la test
fase anziché la verify
fase. Le tue esperienze possono variare!
Queste skip.(surefire|failsafe).tests
proprietà dovrebbero probabilmente essere integrate nel codice surefire / fail-safe stesso, ma non sono sicuro di quanto violerebbe l'ethos "sono esattamente lo stesso plugin tranne 1 piccola differenza".
maven.test.skip
oskipTests
?