EclipseでJUnit TestCase(サンプルソース)編
開発メモ.COM
Java
Eclipse Eclipse
Eclipseプラグイン Eclipseプラグイン(Plugin)
Struts Struts
JUnit関連 テスト関連
 
JUnit  JUnit

データベース
MYSQL MYSQL
PostgreSQL PostgreSQL

サーバ環境関連
レンタルサーバ レンタルサーバ
Apache、PHP Apache
Tomcat Tomcat
JBOSS JBOSS
CVS CVS

その他
開発メモの利用において 本サイトご利用において
開発メモのサイトマップ サイトマップ
開発メモの問合せ 問い合わせ

TOP > テスト関連 > JUnit TestCase(サンプルソース)編

EclipseでJUnit TestCase(サンプルソース)編

TestCaseを利用してJUnitのサンプルソース(Eclipseを使用)を見ながら説明します。
JUnitサンプル作成の前提条件 前提条件:スタブ編でJUnitスタブをEclipseで作成していることを前提に話を進めます。

1. スタブ作成編 | 2.TestCase(サンプルソース)編 


JUnitのテスト対象ソース

package pkg;
public class Eval {
    public boolean isOdd(int number) {
        if (number > 10000) { //10000以上の場合
            throw new IllegalArgumentException("例外テスト用");
        }
        if (number % 2 == 0) { //偶数の場合
            return false;
        }
        return true; //奇数の場合
    }
}

上記はJUnitテスト対象のソースで引数numberの数値が偶数の場合はfalse、奇数の場合はtrue、
10000以上の場合は例外(IllegalArgumentException)をスローするプログラムです。

JUnitのテストソースの作成

TestCaseを利用したテストプログラムを作成するためにJUnitスタブ編で作成した
EvalTestを利用してテストソースを追加していきます。
まずはisTest()メソッドに引数の値として100(偶数)を与えて期待値falseであることをテストします。

package pkg;
import junit.framework.TestCase;
public class EvalTest extends TestCase {
    public void testIsOdd() {
        Eval eval = new Evali(); //テスト対象のインスタンス生成
        assertFalse(eval.isOdd(100)); //100(偶数)を引数で戻り値がfalseであることをテスト
    }
}

上記のソースは継承したjunit.framework.Assert(TestCaseにExtendsされている)の
assertFalseメソッドを使用して戻り値がfalseなことをテストしています。
※テストの検証はAssertクラスのメソッドを使用します。

JUnitのテストソースの実行

JUnitテスト対象ソースのすべてをテストしていませんがとりあえずEclipseで実行してみます。

EclipseのJUnitテスト実行前

上記の赤丸部分「▼」(構成およびデバック)をクリック後に「デバック」> 「JUnitテスト」をクリックします。

EclipseのJUnitテスト実行成功

上記の赤丸部分のようにEclipseで緑のラインが表示されれば期待した戻り値が取得でき
JUnitのテスト成功です。

JUnitのテストソースの実行失敗パターン

上記ではテストが成功した場合の例ですがJUnitで失敗した場合を説明します。

package pkg;
import junit.framework.TestCase;
public class EvalTest extends TestCase {
    public void testIsOdd() {
        Eval eval = new Evali(); //テスト対象のインスタンス生成
        assertFalse(eval.isOdd(100)); //100(偶数)を引数で戻り値がfalseであることをテスト
        assertFalse(eval.isOdd(7)); //7(奇数)を引数で戻り値がtrueのため失敗
    }
}

上記のソースは7(奇数)を引数にした場合はtrueを返すのに期待している戻り値がfalseのため
JUnitテストが失敗するパターンです。

EclipseのJUnitテスト実行失敗

上記の赤丸部分のように赤のラインが表示された場合、JUnitテストに失敗しています。
7(奇数)を引数にした場合はtrueを返すのでassertTrue()メソッドを使用すると成功します。

JUnitの例外テストソース

次に10000以上を引数に指定すると例外が発生するテストを行ないます。

package pkg;
import junit.framework.TestCase;
public class EvalTest extends TestCase {
    public void testIsOdd() {
        Eval eval = new Evali(); //テスト対象のインスタンス生成
        assertFalse(eval.isOdd(100)); //100(偶数)を引数で戻り値がfalseであることをテスト
        assertTrue(eval.isOdd(7)); //7(奇数)を引数で戻り値がtrueであることをテスト
        try {
            eval.isOdd(20000);
            super.fail(); //ここを通ると例外が発生していないためテスト失敗
        } catch (IllegalArgumentException e) {
             //ここを通れば正常に例外が発生したことになる。
        }
    }
}

上記を実行してEclipseで緑のラインが表示されればEvalクラスのテストソースは完成です。
eval.isOdd(20000);を実行したときに例外が発生しないとfail()メソッドを通るため
例外が発生していないことを検出できるようなります。

JUnitのテスト検証を行なうメソッド一覧(使用頻度の高いメソッドのみ)

今回のJUnitのテストではbooleanの比較、例外の対応しか行なっていませんがその他の
使用頻度の高いメソッド(Assertクラス)について一覧にしてみました。

検証メソッド
assertEquals(arg1, arg2) arg1とarg2の値が等しいことを検証(arg1,2の比較はObject.equals()と同様)
※引数(arg1,2)にObject,byte,char,String,short,int,long,float,double,
booleanが指定可能である(注1)。
assertSame(arg1, arg2) arg1とarg2の値が同一なことを検証(arg1,2の比較は==と同様)
※引数(arg1,2)にObjectが指定可能である。
assertNotSame(arg1, arg2) arg1とarg2の値が同一で無いことを検証(arg1,2の比較は!=と同様)
※引数(arg1,2)にObjectが指定可能である。
assertTrue(arg1) arg1の値がtrueなことを検証。※引数(arg1)にbooleanが指定可能である。
assertFalse(arg1) arg1の値がfalseなことを検証。※引数(arg1)にbooleanが指定可能である。
assertNull(arg1) arg1の値がnullなことを検証。※引数(arg1)にObjectが指定可能である。
assertNotNull(arg1) arg1の値がnullで無いことを検証。
※引数(arg1)にObjectが指定可能である。
fail() テストの判定結果を失敗にする。

(注1)プリミティブ型でObject.equals()で比較していると記述しているが
内部ではラッパクラスを使用して比較を行なっている。
例えばint型はInteger、byte型はByteにラップして比較を行なっている。

JUnitのテスト一括実行

JUnitを一括実行するためにはTestSuiteを使用する方法もあるがEclipseプラグインの
djUnitを使用すれば一括実行もでき、Eclipseでカバレージを計測できるため便利です。
EclipseでdjUnitの設定を参照してください。

関連書籍

JUnitに関連する書籍をいくつか紹介します。