2012-01-24 8 views
20

Musiałem przenieść jakiś src/test/java src/main/java według tego recommandation z dokumentacją Maven-jar-plugin =>http://maven.apache.org/plugins/maven-jar-plugin/usage.htmlMurowany nie uruchomi test w src/main/java

I zrobiłem to, ponieważ użyłem klas testów (pomocniczych) w innych projektach w zakresie testowym.

Więc tworzę-Project-test, przeniósł się w klasach testowych i skonfigurowany murowany określić klas testowych katalogu =>

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <testSourceDirectory>${basedir}\src\main\java\</testSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Ale kiedy rozpoczęła mvn test, 0 testów jest wykonywany =>

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

Problem jest taki sam jak ten =>Maven does not find JUnit tests to run, ale rozwiązanie (configure surefire maven plugin) nie działa dla mnie.

+0

Próbujesz uruchomić testy integracyjne? Ponadto, dlaczego definiujesz testSourceDirectory? I dlaczego używasz ukośników? – khmarbaise

+0

Jak wspomniałem @khmarbaise, może pochodzi z backslashes. –

+0

Próbowałem $ {basedir}/src/main/java/lub src/main/java/ale jest to ten sam przebieg testów: 0, Błędy: 0, Błędy: 0, Pomijam: 0 – Antoine

Odpowiedz

27

Dobrą konfiguracji maven plugin jest murowany =>

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory> 
        <testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

Results : 

Tests run: 20, Failures: 0, Errors: 0, Skipped: 0 
+3

Chociaż to zadziała, to w żadnym razie nie jest to dobra konfiguracja, ponieważ nie podąża za sposobem działania Mavena. Źródła powinny znajdować się w 'src/main/java'. Ich skompilowane klasy będą znajdować się w 'target/classes'. Źródła testowe powinny znajdować się w 'src/test/java'. Ich skompilowane klasy będą w 'klasach docelowych/testowych'. To jest odpowiednia konwencja iw ten sposób Surefire będzie działać po wyjęciu z pudełka. Umieszczenie testów w tym samym katalogu, co źródła twojego modułu, jest po prostu niewłaściwe. – carlspring

+5

Nie umieszczałem klas testów w tym samym katalogu, stworzyłem projekt anoter z przyrostkiem "testów". To jest zalecenie pomocy dla maven-jar-plugin => http://maven.apache.org/plugins/maven-jar-plugin/usage.html => "Jak utworzyć słoik zawierający klasy testowe" => "Preferowany way " – Antoine

+0

Dzięki - bardzo mi to pomogło.Rozwijam zestaw koanów, które są (początkowo) nieudanymi testami jednostkowymi, ale są w src/main (już zakończone koany są w katalogu src/test), więc musiałem móc wywołać wtyczkę JUnit pewnie na kodzie w src/main. Wielkie dzięki za pomoc. – quux00

1

Ponieważ zajęcia testowe zostały umieszczone w src/main/java, prawdopodobne jest, że są one coraz zestawiane podczas skompilować fazę target/classes.

Więc chociaż murowany jest skonfigurowany tak, aby wskazać, że lokalizacja źródło test jest src/main/java, byłoby jeszcze szukać klas testowych w target/test-classes, ponieważ jest to domyślna lokalizacja dla klas testowych.

Możesz spróbować określić parametr testClassesDirectory i zobaczyć, czy działa.

Sądzę również, że możesz źle zinterpretować zalecenie zawarte w dokumentacji wtyczki maven jar. Nie wierzę, że sugerują przeniesienie źródeł testowych do src/main/java.

+0

OK, spróbuję. Ale sugestie wtyczek do dodatku "dziękuję": "Przenieś pliki źródłowe z src/test/java, które chcesz udostępnić z oryginalnego projektu do src/main/java tego projektu.Ten sam rodzaj ruchu liczy się również dla zasobów oczywiście." – Antoine

+0

@ Antonina. Masz rację. Znałem "łatwą drogę", ale nigdy nie zrealizowałem "preferowanej drogi". Zaktualizuję również odpowiedź. – Raghuram

Powiązane problemy