Junit4のテストをコンソールで実行する
unit-4.jarの実行方法を調べた.
用意したもの
- 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
). - パッケージ名とディレクトリ名が正しい.