web-dev-qa-db-ja.com

コマンドラインからJUnitテストケースを実行する方法

コマンドラインからJUnitテストケースを実行したいです。これどうやってするの?

300
KK.

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 ...

それが役に立てば幸い。 テストを書く!:-)

251
lzap

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
87
Yuci

@ lzapが与えた答えは良い解決策です。しかし、私はあなたが追加すべきだと付け加えたいと思います。これにより、現在のディレクトリが除外されず、独自のクラスが除外されます。これはいくつかのプラットフォームで私に起こりました。したがって、JUnit 4.xの更新バージョンは次のようになります。

Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
50
rand_acs

JUnit.jarがクラスパスにあることを確認してから、コンソールからコマンドラインランナーを呼び出します。

Java org.junit.runner.JUnitCore [テストクラス名]

参照: junit FAQ

21
Gishu

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]
18

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に含まれています。

12
rogue lad

実際には、JunitにランナブルJarをテストさせ、ランナブルjarをJava -jarとして呼び出すこともできます。

5
Indraneel

個人的には、Maven surefire JUnitランナーを使用します。

4
djangofan

プロジェクトが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

4
user1092126

プロジェクトがantベースの場合は、コンソールから次のようなことができるはずです。

ant test

これでうまくいかなくてもプロジェクトがantベースの場合は、ant -pを実行してプロジェクトの主なターゲットを一覧表示できます。

0
cherouvim

あるいは、以下のメソッドをJunitCoreクラスで使用することができます http://junit.sourceforge.net/javadoc/org/junit/ runun/JUnitCore.html

javaファイルから(Request、Classクラス、およびRunnerを使用して)またはrunClassesを実行します。

0
Raghu K Nair