2012-02-14 10 views
7

Czy można uruchomić test maven (mvn clean test) w projekcie z wieloma modułami i pominąć/zignorować test konkretnego modułu? np. -Dmaven.test.skip=true, ale dla konkretnego modułu i nie wszystkich modułów? Nie chcę zmienić surefu <configuration> na moduł <skipTests>true</skipTests> dla modułu, który chcę pominąć podczas testów. Chciałem wiedzieć, czy można to zrobić z poziomu wiersza poleceń. Potrzebuję tego, ponieważ w moim projekcie mam wiele modułów, a szczególnie jeden lub dwa trwają naprawdę długo, aby wykonać test, więc gdy chcę przetestować tylko kilka modułów, chciałbym pominąć ten czas, biorąc moduły, do których nie mam wprowadzono jakiekolwiek zmiany.Zignoruj ​​moduł podczas testowania testowego dla projektu z wieloma modułami.

+1

Tak. Musisz przeczytać na [profile maven] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) –

Odpowiedz

5

Czy zmiana konfiguracji wtyczki "surefire" jest naprawdę trudna? Ponieważ można ją zmienić tylko raz w module ...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip.foo.module.tests}</skipTests> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

... i przekazać prawdziwe/fałszywe wartości znacznika skipTests do właściwości maven, aktywowany za pomocą dedykowanego profilu:

<properties> 
    <skip.foo.module.tests>false</skip.foo.module.tests> 
</properties> 

<profiles> 
    <profile> 
     <id>SKIP_FOO_MODULE_TESTS</id> 
     <properties> 
      <skip.foo.module.tests>true</skip.foo.module.tests> 
     </properties> 
    </profile> 
</profiles> 

Tak, że można wyłączyć testy w module Foo z wiersza poleceń:

mvn czyste testy -P SKIP_FOO_MODULE_TESTS

+0

Dzięki Yanflea. Chociaż nie było to dokładnie to, czego chciałem, ale to działa dla mnie. Dzięki takiemu podejściu mogę mieć jeden profil na raz, więc w przypadku, gdy chcę pominąć testy dla więcej niż jednego modułu, nie mogę. Ale w każdym razie to niewiele. – Jay

+0

Twoje moduły mogą współdzielić tę samą pompę dla rodziców, w której definiujesz swoje profile. Co uniemożliwia korzystanie z tego samego profilu do pominięcia testów kilku modułów potomnych w tym samym czasie? – Yanflea

+0

To zadziała tylko wtedy, gdy chcę cały czas pominąć te moduły. Kiedy się rozwijam, czasami wprowadzam zmiany w module-1, które nie wpływają na moduł-7 i moduł-9, więc chciałbym je pominąć, ale w innym czasie, jeśli dokonam zmian w module-3, co wpływa na moduł-7, ale nie moduł-9, w tym przypadku chciałbym pominąć tylko moduł-9. W przypadku takich scenariuszy udostępnianie profili w systemie nadrzędnym nie będzie działać. Teraz nie chcę zanieczyszczać mojej pompy macierzystej wszystkimi rodzajami profili pomijając testy dla różnych modułów i kombinacji. – Jay

0

Można to osiągnąć za pomocą profilu, który skonfigurował konfigurację surefire do pominięcia. To pozwoliłoby na utrzymanie testu przez większość czasu, ale gdy chciałeś kiedyś pominąć testy jednego z modułów, możesz go wywołać. Następnie możesz wykluczyć wszystkie testy za pomocą testów pomijania lub możesz użyć opcji wykluczania, aby wykluczyć tylko jeden lub dwa testy, które trwają długo.

Powiązane problemy