JUnit
JUnitとは
JUnitの設定
テスト作成前に
クラス名は自由だが、Testというプレフィックスまたはサフィックスを付けるのが一般的である。たとえばクラス名がProfileの場合、テストクラス名はTestProfileかProfileTestとするのがよい。
ここではオープンソースのIDEであるEclipseからJUnitを使用する。
TestCaseの作成方法
public void setUp()
テストケースの初期化処理を記述。クラスの作成やテーブルの初期化などを行う。
public void tearDown()
テストケースの後始末を記述。データベースコネクションの切断やインスタンスの開放などを行う。
public void test〜()
テストコードを記述。testプレフィックスが付いたメソッドはテスト自動実行の対象となる。
テストの範囲は、1つのクラスに対して1つのTestCaseとするのが望ましい。
TestCaseの作成
TestSampleClass.java
import junit.framework.TestCase;
public class TestSampleClass extends TestCase {
public TestSampleClass(String str){
super(str);
System.out.println("コンストラクタ");
}
public void setUp(){
System.out.println("setUp");
}
public void test1(){
System.out.println("test1");
}
public void test2(){
System.out.println("test2");
}
public void tearDown(){
System.out.println("tearDown");
}
}
このクラスにはテスト用コードが記述されていないので、実際の単体テストは行われないが、きちんと動作するので実行イメージを見ることができる。
テストを実行する。EclipseのパッケージエクスプローラーでTestCaseソースファイルに対して右クリックし、「実行」→「JUnitテスト」を選ぶ。(図1)

図1:TestCaseの実行
実際のテストでは、テスト結果を視覚的に確認することができる。「ウィンドウ」メニューから「ビューの表示」→「その他」を選択して、表示されたダイアログボックスから「Java」→「JUnit」を選択する。
このJUnitビューにテスト結果が表示される。
結果コンソール
setUp test1 tearDown setUp test2 tearDown
test〜メソッドが自動的に実行される。複数のtest〜メソッドを定義しておくと、それぞれのテストメソッドを実行するたびに、setUpメソッド(初期化処理)とtearDownメソッド(後始末処理)が実行される(上記の結果参照)。
また、JUnitビューにテスト結果が表示されます(図2)

図2:結果バー
今回はテストコードを記述していないため、テストを全部パスしたときに表示される緑のバーが表示される。
テストコードの記述
assertメソッド一覧についてはhttp://www.junit.org/junit/javadoc/3.8.1/junit/framework/Assert.html(リンク先:JUnit.org)を参照。
実際にコードを記述してみる。
テスト対象のクラスとして下記のクラスを利用する。
public class SampleClass {
private String name;
public SampleClass(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
OKサンプルコード
import junit.framework.TestCase;
public class TestSampleClass extends TestCase {
private SampleClass human;
public void setUp(){
human = new SampleClass("たろう");
}
public void test(){
assertEquals("たろう", human.getName());
}
}
NGサンプルコード
import junit.framework.TestCase;
public class TestSampleClass extends TestCase {
private SampleClass human;
public void setUp(){
human = new SampleClass("たろう");
}
public void test(){
assertEquals("じろう", human.getName());
}
}

