コマンドラインからJUnitテストケースを実行したいです。これどうやってするの?
JUnit 5.xの場合:
Java -jar junit-platform-console-standalone-<version>.jar <Options>
https://stackoverflow.com/a/52373592/1431016 および httpsで詳細を確認してください。 ://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
JUnit 4.Xの場合、それは本当に:
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
しかし、JUnit 3.Xを使用している場合は、クラス名が異なります。
Java -cp .:/usr/share/Java/junit.jar junit.textui.TestRunner [test class name]
クラスファイルにJARまたはディレクトリをクラスパスに追加し、それらをセミコロン(Windows)またはコロン(UNIX/Linux)で区切る必要があるかもしれません。それはあなたの環境によります。
編集:私は例として現在のディレクトリを追加しました。あなたの環境とあなたがあなたのアプリケーションをどのように構築するかに依存します(bin /もしくはbuild /あるいはmy_application.jarなどでさえあり得ます)。注Java 6+はクラスパスでglobをサポートしています。
Java -cp lib/*.jar:/usr/share/Java/junit.jar ...
それが役に立てば幸い。 テストを書く!:-)
Maven way
Mavenを使用している場合は、次のコマンドを実行してすべてのテストケースを実行できます。
mvn clean test
あるいは、以下のように特定のテストを実行することもできます。
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Target\surefire-reportsフォルダー内のレポートファイルではなく、コンソールにスタックトレース(存在する場合)を表示したい場合は、ユーザープロパティーのsurefire.useFileをfalseに設定してください。例えば:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle way
Gradleを使用している場合は、次のコマンドを実行してすべてのテストケースを実行できます。
gradle test
あるいは、以下のように特定のテストを実行することもできます。
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
詳細情報が必要な場合は、--stacktrace、--info、または--debugなどのオプションを検討してください。
たとえば、info logging level --infoを指定してGradleを実行すると、実行中の各テストの結果が表示されます。例外がある場合は、スタックトレースが表示され、問題が何であるかが指摘されます。
gradle test --info
全体的なテスト結果を確認したい場合は、ブラウザでレポートを開くことができます(UbuntuのGoogle Chromeを使用して開きます)。
google-chrome build/reports/tests/index.html
アントウェイ
Antビルドファイルbuild.xmlを設定したら、以下のようにコマンドラインからJUnitテストケースを実行できます。
ant -f build.xml <Your JUnit test target name>
AntビルドファイルでJUnitテストを設定する方法の詳細については、次のリンクをたどってください。 https://ant.Apache.org/manual/Tasks/junit.html
通常の方法
Maven、Gradle、またはAntを使用していない場合は、次のようにします。
まず最初に、テストケースをコンパイルする必要があります。例えば(Linuxの場合):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.Java
それからテストケースを実行します。例えば:
Java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName
@ lzapが与えた答えは良い解決策です。しかし、私はあなたが追加すべきだと付け加えたいと思います。これにより、現在のディレクトリが除外されず、独自のクラスが除外されます。これはいくつかのプラットフォームで私に起こりました。したがって、JUnit 4.xの更新バージョンは次のようになります。
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
JUnit.jarがクラスパスにあることを確認してから、コンソールからコマンドラインランナーを呼び出します。
Java org.junit.runner.JUnitCore [テストクラス名]
参照: junit FAQ
JUnit 4.12では、以下はうまくいきませんでした。
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
どうやら 、JUnit 4.11以降ではクラスパスにhamcrest-core.jar
も含めるべきです:
Java -cp .:/usr/share/Java/junit.jar:/usr/share/Java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
Windowsでは
Java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[.class拡張子のないテストクラス名]
たとえば、c:\>Java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
など、複数のテストクラスがある場合。
- cpはクラスパスを表し、ドット(。)は既存のクラスパスを表し、セミコロン(;)はクラスパスに追加のjarを追加します。上の例では、junit-4.8.2がJUnitCoreクラスを実行するためにクラスパスで利用可能になりました。ここではテストクラスを実行するために使用していました。
上記のコマンドラインステートメントは、コマンドプロンプト(i-e MSDos)からjunit(version 4+)テストを実行するのを助けます。
注:JUnitCoreはjunitテストを実行するためのファサードです。このファサードは4つのバージョンのjunitに含まれています。
実際には、JunitにランナブルJarをテストさせ、ランナブルjarをJava -jarとして呼び出すこともできます。
個人的には、Maven surefire JUnitランナーを使用します。
プロジェクトがMavenベースの場合は、次のコマンドを使用して、モジュール 'my-module'に属するtest-class CustomTestからすべてのテストメソッドを実行できます。
mvn clean test -pl :my-module -Dtest=CustomTest
または、次のコマンドを使用してテストクラスCustomTestから1つのテストメソッドmyMethodのみを実行します。
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
この機能のためには、Maven Surefire Plugin v.2.7.3 +とJunit 4が必要です。詳細はこちら: http://maven.Apache.org/surefire/maven-surefire-plugin/examples/single-test.html
プロジェクトがantベースの場合は、コンソールから次のようなことができるはずです。
ant test
これでうまくいかなくてもプロジェクトがantベースの場合は、ant -p
を実行してプロジェクトの主なターゲットを一覧表示できます。
あるいは、以下のメソッドをJunitCoreクラスで使用することができます http://junit.sourceforge.net/javadoc/org/junit/ runun/JUnitCore.html
javaファイルから(Request、Classクラス、およびRunnerを使用して)またはrunClassesを実行します。