Odkryłem, że najprostszym sposobem na pominięcie tylko testów pewności jest skonfigurowanie pewnego ognia ( ale nie bezpiecznego ) w następujący sposób:
<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>
Pozwala to na uruchomienie mvn verify -Dskip.surefire.tests
i tylko pewne, nie zabezpieczone przed awarią, testy zostaną pominięte; przeprowadzi również wszystkie inne niezbędne fazy, w tym przed integracją i po integracji, a także uruchomi verify
cel, który jest wymagany do rzeczywistego niepowodzenia kompilacji mavena, jeśli testy integracyjne zawiodą.
Zauważ, że ponownie definiuje to właściwość używaną do określenia, że testy powinny być pomijane, więc jeśli podasz wartość kanoniczną -DskipTests=true
, surefire zignoruje ją, ale failafe ją uszanuje, co może być nieoczekiwane, szczególnie jeśli masz już istniejące kompilacje / użytkowników określających tę flagę. Wydaje się, że prostym obejściem jest domyślna skip.surefire.tests
wartość skipTests
w Twojej <properties>
sekcji pom:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
Jeśli potrzebujesz, możesz podać parametr analityczny o nazwie „failafe” skip.failsafe.tests
, jednak nie uznałem tego za konieczne - ponieważ testy jednostkowe zwykle są uruchamiane we wcześniejszej fazie, a jeśli chcę uruchomić testy jednostkowe, ale nie testy integracji, uruchomiłbym test
fazy zamiast verify
etapu. Twoje doświadczenia mogą się różnić!
Te skip.(surefire|failsafe).tests
właściwości powinny być prawdopodobnie zintegrowane z samym kodem typu surefire / fail safe, ale nie jestem pewien, w jakim stopniu naruszyłoby to zasadę „to dokładnie ta sama wtyczka, z wyjątkiem jednej drobnej różnicy”.
maven.test.skip
czyskipTests
?