Junit4のテストをコンソールで実行する

用意したもの

  • junit-4.13.jar
  • hamcrest-core-1.3.jar
  • sampleプロジェクト
ディレクトリ構成
root/
  ┗ sample
       ┣ Add.java
       ┗ AddTest.java
Add.java
package sample;

public class Add {
    public int add(int a, int b){
        return a + b;
    }
}
AddTest.java
package sample;

import static org.junit.Assert.*;

public class AddTest {
    @org.junit.Test
    public void Test01(){
        Add add = new Add();
        assertEquals(5, add.add(2,3));
    }
}

テスト実行

コンパイル (カレントディレクトリ:root/sample)

クラスパスにjunitへのパスを指定しないとコンパイルできない.

javac -cp /path/to/junit-4.13.jar Add.java AddTest.java

テスト実行 (カレントディレクトリ:root/)

クラスパスにカレントディレクトリ,junit, hamcrestへのパスを指定しないと実行できない.

java -cp .:/path/to/junit-4.13.jar:/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore sample.AddTest

出力

JUnit version 4.13
.
Time: 0.01

OK (1 test)

エラーが出るとき

何かがおかしいと,以下のようなエラーが出力される.

java.lang.IllegalArgumentException: Could not find class [AddTest]
Exception in thread "main" java.lang.NoClassDefFoundError: sample/AddTest (wrong name: AddTest)

確認する部分は以下.

  • クラスパスに,カレントディレクトリ,humcrest,junitへのパスを指定している.
  • テスト実行をパッケージの親ディレクトリで行なっている(今回の例でいうとroot/).
  • テストクラス名にパッケージ名をつけている(今回の例でいうと,AddTestではなく,sample.AddTest).
  • パッケージ名とディレクトリ名が正しい.