JUnit

Advertisement

JUnitとは

JUnitはJavaで単体テストを自動的に行うためのツールである。http://www.junit.org/から入手することができる。

JUnitの設定

ダウンロードしたアーカイブファイルを解凍後、junit.jarをクラスパスに設定する。

テスト作成前に

JUnitではクラス(ユニット)のテストを行うためのテストクラスを作成する。
クラス名は自由だが、Testというプレフィックスまたはサフィックスを付けるのが一般的である。たとえばクラス名がProfileの場合、テストクラス名はTestProfileかProfileTestとするのがよい。

ここではオープンソースのIDEであるEclipseからJUnitを使用する。

TestCaseの作成方法

1つのテストファイルをテストケース(TestCase)という。TestCaseを実装する際には、junit.framework.TestCaseクラスを継承するクラスを定義する。継承した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:結果バー
今回はテストコードを記述していないため、テストを全部パスしたときに表示される緑のバーが表示される。

テストコードの記述

実際のテストコードでは、junit.framework.TestCaseクラスで定義されているassert〜メソッドを利用する。これらのメソッドのことをassertメソッドという。

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());
    }
}

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ

サイト検索

Google

Web サイト内

Y!ログール