JUnitによるユニットテスト

JUnitによるユニットテストの方法を記載する。
テストファーストとする為、ここでは先にテストコードを作成する。

(1) 前準備

 1.1 junit.jar をビルドパスに追加する。
   ・対象のプロジェクトを右クリック -> [プロパティ] -> [Javaのビルドパス] -> [ライブラリ]を選択。
   ・[ライブラリの追加] で JUnit を追加する。
    ※JUnitがない場合は junitプラグインをダウンロード&インストールしてから上記の操作を行う。
     複数人プロジェクトで使用する場合は lib に放り込んでおきつつ、CLASSPATHに含めておくといいかも。
 1.2 テストコード格納用のソースフォルダを作成する
   ・[新規] -> [ソースフォルダ] ※ここではフォルダ名を test とする
 1.3 テストクラスの出力先を設定する(実際のソースとテストコードを分ける為)
   ・プロジェクトを右クリック -> [プロパティ] -> [Javaのビルドパス] -> [ソース] を選択
   ・[ソースフォルダ毎に出力フォルダの指定を可能にする] をチェックする。
   ・テストコード用のフォルダ展開して、出力フォルダーをテストコード用のフォルダと同じ所に設定する。
    ※これでテストコードのクラスがコンパイルされると、テストコード用のフォルダに出力されるようになる。

 

junit_init.jpg

 1.4 ファイル構成
   ・順番が前後するが、最終的に作成するファイルの構成は下図のようになる。※test_junitはプロジェクト名

 

junit00.jpg

(2) テスト対象クラス仕様の確認

 テスト対象となるクラスの仕様は以下の通りとする。

パッケージ名クラス名メソッド名引数処理内容
utilMyMathaddint a, int ba + b を返す
subint a, int ba - b を返す
mulint a, int ba * b を返す
divint a, int ba / b を返す
0割りされた場合はExceptionでなく0を返す

(3) 空のテスト対象クラスを作成する 

package util;

public class MyMath {

	/*
	 * 足し算
	 */
	public static int add(int a, int b){
		return 0;
	}

	/*
	 * 引き算
	 */
	public static int sub(int a, int b){
		return 0;
	}

	/*
	 * 掛け算
	 */
	public static int mul(int a, int b){
		return 0;
	}

	/*
	 * 割り算
	 */
	public static int div(int a, int b){
		return 0;
	}
}

  ※エラー確認を行う為に、とりあえず全て0を返すように。

(4) テストコードの作成と対象クラスの修正

 4.1 テストクラスの作成

  1. [MyMath.javaを右クリック] -> [新規] -> [JUnitテスト・ケース]
  2. ソースフォルダをテストコード用のフォルダに変更して [次へ]
  3. テストしたいメソッドにチェックを入れて[終了]

 4.2 テストクラスを下記のようにコーディングする。
    見ての通り、例えば メソッドA のテストコードは、 testメソッドA というメソッドに記述する。
    ※Java1.5対応のJUnitであれば、この名前規則に従う必要はなく @Test というアノテーションを記述すれば良い。

package util;
import junit.framework.TestCase;

/*
 * MyMathのテストケース
 */
public class MyMathTest extends TestCase {

	public MyMathTest(String arg0) {
		super(arg0);
	}

	/**
	 * 足し算のテスト
	 */
	public void testAdd() {
		int res1 = MyMath.add(1,2);
		assertEquals(3, res1);

		int res2 = MyMath.add(0,0);
		assertEquals(0, res2);

		int res3 = MyMath.add(1,-4);
		assertEquals(-3, res3);
	}

	/**
	 * 引き算のテスト
	 */
	public void testSub() {
		int res1 = MyMath.sub(1,2);
		assertEquals(-1, res1);

		int res2 = MyMath.sub(0,0);
		assertEquals(0, res2);

		int res3 = MyMath.sub(1,-4);
		assertEquals(5, res3);
	}

	/**
	 * 掛け算のテスト
	 */
	public void testMul() {
		int res1 = MyMath.mul(1,2);
		assertEquals(2, res1);

		int res2 = MyMath.mul(0,0);
		assertEquals(0, res2);

		int res3 = MyMath.mul(1,-4);
		assertEquals(-4, res3);

		int res4 = MyMath.mul(-2,-4);
		assertEquals(8, res4);
	}

	/**
	 * 割り算のテスト
	 */
	public void testDiv() {
		int res1 = MyMath.div(6,2);
		assertEquals(3, res1);

		int res2 = MyMath.div(10,6);
		assertEquals(1, res2);

		int res3 = MyMath.div(0,10);
		assertEquals(0, res3);

		int res4 = MyMath.div(10,0);
		assertEquals(0, res4);
	}
}

(5) テストの実行

 5.1 とりあえず一回テストを実行してみる。
  ・MyMathTest.java を右クリック -> [実行] -> [JUnitテスト]

[実行結果](MyMath が、まだきちんと実装されていないので、当然コケル。)

junit01.jpg

 5.2 MyMathの各メソッドを下記のように実装して、再度テストを実行。

package util;

public class MyMath {

	/*
	 * 足し算
	 */
	public static int add(int a, int b){
		return a + b;
	}

	/*
	 * 引き算
	 */
	public static int sub(int a, int b){
		return a - b;
	}

	/*
	 * 掛け算
	 */
	public static int mul(int a, int b){
		return a * b;
	}

	/*
	 * 割り算
	 */
	public static int div(int a, int b){
		return a / b;
	}
}
[実行結果]

junit02.jpg

 5.3 testDivでコケている事がわかるので、障害トレースに表示された情報を元に、
   MyMathのdivメソッドを下記のように修正して再度、テストを実行。

/*
 * 割り算
 */
public static int div(int a, int b){
	if (b == 0){
		return 0;
	} else {
		return a / b;
	}
}
[実行結果]

junit03.jpg

  エラーがなくなった。


添付ファイル: filejunit_init.jpg 865件 [詳細] filejunit02.jpg 919件 [詳細] filejunit03.jpg 883件 [詳細] filejunit00.jpg 886件 [詳細] filejunit01.jpg 936件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-11 (木) 00:48:33 (3476d)