Próbuję znaleźć podejście, które pozwoli mi uruchomić pojedynczy test z klasy JUnit przy użyciu tylko wiersza poleceń i języka Java.
Mogę przeprowadzić cały zestaw testów z klasy używając:
java -cp .... org.junit.runner.JUnitCore org.package.classname
To, co naprawdę chcę zrobić, to coś takiego:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
lub:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Zauważyłem, że mogą istnieć sposoby, aby to zrobić za pomocą adnotacji JUnit, ale wolałbym nie modyfikować źródła moich klas testowych ręcznie (próbując to zautomatyzować). Widziałem też, że Maven może mieć na to sposób, ale jeśli to możliwe, chciałbym uniknąć polegania na Mavenie.
Zastanawiam się więc, czy jest jakiś sposób, aby to zrobić?
Kluczowe punkty, których szukam:
- Możliwość uruchomienia pojedynczego testu z klasy testowej JUnit
- Wiersz poleceń (za pomocą JUnit)
- Unikaj modyfikowania źródła testu
- Unikaj używania dodatkowych narzędzi
java
unit-testing
command-line
junit
Kevin Jalbert
źródło
źródło
Odpowiedzi:
Możesz dość łatwo stworzyć niestandardowy, szkieletowy biegacz JUnit. Oto taki, który uruchomi pojedynczą metodę testową w postaci
com.package.TestClass#methodName
:Możesz to wywołać w ten sposób:
Po szybkim przejrzeniu źródła JUnit doszedłem do tego samego wniosku, co Ty, że JUnit nie obsługuje tego natywnie. Nigdy nie stanowiło to dla mnie problemu, ponieważ wszystkie środowiska IDE mają niestandardowe integracje JUnit, które umożliwiają między innymi uruchamianie metody testowej pod kursorem. Nigdy nie uruchamiałem testów JUnit bezpośrednio z wiersza poleceń; Zawsze pozwalałem, by zajęło się tym IDE lub narzędzie do budowania (Ant, Maven). Zwłaszcza, że domyślny punkt wejścia CLI (JUnitCore) nie generuje żadnych wyników innych niż niezerowy kod zakończenia w przypadku niepowodzenia testu.
UWAGA: dla wersji JUnit> = 4.9 potrzebujesz biblioteki hamcrest w ścieżce klas
źródło
Używam Maven do budowania projektu i używam wtyczki SureFire Maven do uruchamiania testów junit. Pod warunkiem, że masz taką konfigurację, możesz zrobić:
W tym przykładzie po prostu uruchamiamy metodę testową o nazwie „testMethod” w klasie „GreatTestClass”.
Aby uzyskać więcej informacji, odwiedź http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
źródło
Użyliśmy IntelliJ i spędziliśmy sporo czasu, próbując też to rozgryźć.
Zasadniczo obejmuje 2 kroki:
Krok 1: Skompiluj klasę testową
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Krok 2: Uruchom test
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
źródło