Mam kompilację Maven, w której używam wtyczki SureFire do uruchamiania niektórych testów jednostkowych oraz wtyczki FailSafe do uruchamiania testów integracji. Chciałbym mieć sposób na uruchomienie tylko testów wtyczki FailSafe.
Nie jest dla mnie dobrym rozwiązaniem dodawanie różnych profili lub czegokolwiek w pomie, ponieważ jest to kompilacja wielomodułowa i nie chcę edytować pom każdego modułu.
Istnieją skip.tests
i maven.test.skip
i skipTests
które zatrzymują wszystkie testy i skipITs
, które zatrzymują tylko bezpieczną wtyczkę.
Czy jest więc flaga wiersza poleceń podobna do Mavena skipITs
, ale z funkcją „onlyITs”?
maven
build
integration-testing
maven-surefire-plugin
maven-failsafe-plugin
Matthew Gilliard
źródło
źródło
maven.test.skip
czyskipTests
?skipTests
pomija tylko testy niezawodności, a nie test bezpieczeństwa! Może to nowa funkcja?Odpowiedzi:
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:
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 uruchomiverify
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ślnaskip.surefire.tests
wartośćskipTests
w Twojej<properties>
sekcji pom: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łbymtest
fazy zamiastverify
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”.źródło
<skipTests>false</skipTests>
nadal działa z dowolną kombinacją -DskipTests lub -Dskip.surefire.tests, ponieważ argumenty wiersza poleceń wydają się nadpisywać właściwości stackoverflow.com/questions/13708738 /… Możesz dodać to do swojego rozwiązania<skipTests>${skip.surefire.tests}</skipTests>
nie działa zmaven-surefire-plugin
wersją3.0.0-M3
. Wszystkie testy sprawdzające się nadal trwają. Ktoś jeszcze to znalazł? Poniższe rozwiązanie Seana Patricka Floyda działa jednak.Obejściem byłoby zadzwonić:
Wprawdzie jest to brzydkie, ale może rozwiązać Twój problem.
Lub (kolejny hack):
Odniesienie:
surefire:test#test
surefire:test#failIfNoTests
źródło
verify
zamiastintegration-test
w drugim rozwiązaniu.failsafe:verify
na końcu pierwszego hack (mvn clean test-compile failsafe:integration-test failsafe:verify
), kompilacja zakończy się niepowodzeniem, jeśli jeden z testów integracji zakończy się niepowodzeniem.Używam kodu z bloga Antonio Goncalvesa , który działa idealnie.
Możesz użyć następujących właściwości:
-DskipUTs=true
za pomijanie testów niezawodności.-DskipITs=true
do pomijania testów bezpieczeństwa.-DskipTests=true
za pominięcie wszystkich testów.Jest
pom.xml
to następujące:źródło
skipITs
jest to ustawienie domyślne.Mam nadzieję że to pomoże!
Spróbuj uruchomić test tylko z FailSafe (wtyczka do testu integracji - pozwoli ci to uruchomić tylko testy integracji z tego rodzaju nazwami, domyślnie: * / IT .java, ** / IT.java, * /*ITCase.java ;, ale możesz to łatwo zmienić z pliku pom)
A kiedy chcesz używać tylko SureFire (wtyczki do testów jednostkowych)
lub jeden test na raz z:
źródło
Podoba mi się to, więc wszystkie fazy są normalnie wykonywane:
źródło
Aby rozwinąć komentarze @danidemi i @GuillaumeHusta:
Aby pominąć testy jednostkowe, ale nie testy integracji, możesz to zrobić, jeśli używasz najnowszej wersji wtyczki Failsafe:
(jeśli to ci pomoże, poproś o uwagi, o których mowa)
źródło
Spróbuj uruchomić testy integracyjne lub jednostkowe w oddzielnym profilu. Następnie możesz po prostu włączyć / wyłączyć profil.
źródło