2011-07-25 10 views
29

mogę znaleźć w Maven docs gdzie pokazuje jak uruchomić:Jak uruchomić wszystkie testy w konkretnym pakiecie z Maven?

  1. Pojedyncze badanie
  2. Wszystkie testy w jednej klasie testowej
  3. Wszystkie testy w klasach dopasowania konkretnego wzoru

Ale jak uruchomić wszystkie testy w pakiecie? czy to możliwe?

Wolałbym rozwiązania, które nie wymagają modyfikowania kodu ani kodu pom.xml.

+0

spróbuj tego [LINK] (http://maven.apache.org/plugins/maven -surefire-plugin/examples/inclusion-exclusion.html). –

Odpowiedz

99

można użyć wzoru jak również, na przykład

mvn '-Dtest=de.mypackage.*Test' test 

uruchamia wszystkie testy w klasach z pakietu de.mypackage kończący się *Test.

[Aktualizacja 18.12.2017]:
Ponieważ został przyjęty odpowiedź, oto niektóre dalsze informacje:

  • Maven używa Maven Surefire plugin wykonać testy.
  • Zastosowana powyżej składnia (kwalifikowana nazwa pakietu) wymaga wersji Surefire 2.19.1 lub wyższej! Wcześniejsze wersje wymagają użycia wyrażeń ścieżki, na przykład

    mvn -Dtest="de/mypackage/*Test" test 
    
  • Używam cudzysłowu ('lub „), aby zapobiec powłokę z wykonaniem rozwijania nazw plików, Maven nie wymaga żadnych cytatów.

  • jednej metody badania można exuted stosując następującą składnię

    mvn -Dtest=MyUnitTest#testMethod test 
    
  • Wszystkie testy z podpakietów może być zawiera, jak również, w celu realizacji wszystkich testów lub pod pakietem de.mypackage.sub wykonania:

    mvn -Dtest="de/mypackage/sub/**" test 
    

    lub SureFire 2.19.1 lub wyższej

    mvn -Dtest="de.mypackage.sub.**" test 
    

Istnieją inne możliwości, takie jak używanie wyrażeń regularnych, zobacz official documentation of running a single test.

+2

Idealne dla mnie! mvn test -Dest = com.example.handler. * Test –

+19

Możesz nawet zrobić 'mvn '-Dtest = de.mypackage. **. * Test" test ", aby dołączyć podpakiety. – Jan

+1

W Maven 3 działa dobrze, kiedy nie mogę t użyj apostrofu (') –

1

To może nie być najlepsza odpowiedź, ale można uruchomić pojedyncze narzędzie TestSuite (które jest testem), które zawiera wszystkie wymagane testy w jednym pakiecie.

19

AFAIK nie ma parametru wiersza poleceń dla surefire: test do uruchomienia testów w konkretnym pakiecie.

Używam zmiennej konfiguracyjnej, aby osiągnąć ten sam efekt. Fragment mojego pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.7.2</version> 
      <configuration> 
       <includes> 
        <include>**/${testGroup}/*Test.java</include> 
       </includes> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Teraz jeśli chcę uruchomić testy w pakiecie o nazwie „com.example”, używam następujące polecenia:

mvn test -DtestGroup=com/example 
6
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.* 

... a jeśli chcesz dołączyć wszystkie pakiety Podtyp:

mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.* 
0

To może być również wykonane przez

mvn clean test -Dtest="**/service/**/*.java" 

np: Jestem w moim/home/repozytorium i chcę uruchomić testy tylko w katalogu/home/repository/service

Tutaj folder usługi znajduje się w moim bieżącym folderze.

0

Można wspomnieć paczek w pom.xml przez Surefire-plugin

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <includes> 
        <include>com.mycom.mydep.mypak.*, com.mycom.mydep.mypak2.*</include> 
       </includes> 
      </configuration> 
     </plugin> 

Należy pamiętać, że wersja JUnit powinna być większa niż 4,8. i wersja SureFire powinny być 2.19.1 Find more details here

1

Wersja pom.xml od O Badr za odpowiedź:

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.20.1</version> 
       <configuration> 
        <includes> 
       <!-- includes all tests, but not in subpackages --> 
         <include>**/package1/*</include> 
       <!-- includes all tests, AND in subpackages --> 
         <include>**/package2/**</include> 
        </includes> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
+1

Moje stare pytania dotyczące Mavena uzyskują spójne widoki ... Nie jestem pewien, czy powinienem być szczęśliwy, czy smutny z tego powodu. –

Powiązane problemy