Okapi Project

Eclipse の便利な機能( JUnit )

バージョン
2003 年 12 月 6 日 Ver.1.1
作成者
T.Hirata ( Xware )

要約

ここでは Eclipse でテスティングフレームワークである JUnit を使用してテストを行う方法について解説します。

目次


1. はじめに

 

サンプルとして以下のようなプログラムを作成し、実行することとします。

 

public class GokeiSample {

public static void main(String[] args) {
Gokei gokei = new Gokei(3, 3);
if (gokei.canAdd()){
int ans = gokei.add();
System.out.println("合計値は " + ans + " です。");
} else {
System.out.println("数値の大小関係が正しくありません。");
} }
}

 

public class Gokei {

private int min = 0;
private int max = 0;
private int ans = 0;

public Gokei(int min, int max){

this.min = min;
this.max = max;
}

/*
* 数値の大小関係をチェックします。
*/
public boolean canAdd(){

if (min > max) {
return false;
}

return true;
}

/*
* 数値の合計値を求めます。
*/
public int add(){

int ansWrk = 0;

while (min <= max){
ansWrk = ansWrk + min;
min++;
}

return ansWrk;
}
}

 

 

2. JUnitの設定

A.ビルドパスの設定

メニューから「ファイル」-「プロパティ」を選択します。

「ファイル」-「プロパティ」を選択

 

 

B.JARファイルの追加

左側の「Javaのビルド・パス」を選択し、「ライブラリー」タグで「外部JARの追加」をクリックします。

「ライブラリー」タグで「外部JARの追加」をクリック

 

 

C.JARファイル選択

「plugins\ org.junit_3.8.1」フォルダの「junit.jar」を開きます。

「junit.jar」を開く

 

 

D.ソース添付

追加されたJUnit.jarの「ソース添付」を選択し、「編集」をクリックします。

「ソース添付」を選択し、「編集」をクリック

 

 

E.ロケーションパスの指定

「外部ファイル」をクリックして以下のファイルを選択し、「OK」をクリックします。

「ロケーション・パス」:Plugins/org.eclipse.jdt.source_2.1.1/src/org.junit_3.8.1/junitsrc.zip

ファイルを選択し「OK」をクリック

 

 

F.設定完了

「OK」をクリックすれば設定完了です。

「OK」をクリック

 

 

 

3. テストケースの作成・実行

A.テストケース雛形クラスの生成1

テストしたいクラスを右クリックし、「新規」-「その他」を選択します。

今回は「Gokei.java」クラスをテストすることにします。

「新規」-「その他」を選択

 

 

B.テストケース雛形クラスの生成2

左側で「Java」-「JUnit」を選択後、右側の「TestCase」を選択し「次へ」をクリックします。

「TestCase」を選択し「次へ」をクリック

 

 

C.テストケースの設定

生成するメソッド・スタブを選択し、「次へ」をクリックします。

今回は「setUp()」をチェックします。


テスト・ケース(C):通常テストケースクラス名は「テストクラス名 + “Test”」とします。


スーパークラス(S):必ず「junit.framework.TestCase」とします。

新規 JUnit TestCase を作成

 

 

D.テストメソッドの選択

テストするメソッドを選択し、「終了」をクリックします。

今回は「canAdd()」と「add()」メソッドを選択します。

テストするメソッドを選択

 

 

E.テストケースの記述

テストケースの記述にはアサーションメソッドを使用します。

使用するアサーションメソッド
メソッド名 テスト内容
assertTrue(boolean) パラメータがtrueであることを確認します。
assertEquals(expected, actual) 2つのパラメータ(オブジェクト)が同じであることを確認します。
assertSame(expected, actual) 2つのパラメータ(オブジェクト)が同じインスタンスであることを確認します。
fail() 必ずテストを失敗させます。

 

今回は、以下のようなテストケースを作成してみます。

テストケース
  テスト値 canAdd() Add()
No min max 想定結果 想定結果
1
0
0
true
0
2
0
1
true
1
3
1
0
false
4
3
3
true
3
5
3
4
true
7
6
4
3
false
7
3
5
true
12
8
5
3
false

 

アサーションメソッドを使用して、テストケースを以下のように作成してみます。

import junit.framework.TestCase;



public class GokeiTest extends TestCase {

private Gokei gk01;
private Gokei gk02;
private Gokei gk03;
private Gokei gk04;
private Gokei gk05;
private Gokei gk06;
private Gokei gk07;
private Gokei gk08;

/**
* Constructor for GokeiTest.
* @param name
*/
public GokeiTest(String name) {
super(name);
}

/*
* @see TestCase#setUp()
*/
protected void setUp(){ gk01 = new Gokei(0,0);
gk02 = new Gokei(0,1);
gk03 = new Gokei(1,0);
gk04 = new Gokei(3,3);
gk05 = new Gokei(3,4);
gk06 = new Gokei(4,3);
gk07 = new Gokei(3,5);
gk08 = new Gokei(5,3);

}
public void testCanAdd01() {
assertTrue(gk01.canAdd());
}
public void testCanAdd02() {
assertTrue(gk02.canAdd());
}
public void testCanAdd03() {
assertTrue(!gk03.canAdd());
}
public void testCanAdd04() {
assertTrue(gk04.canAdd());
}
public void testCanAdd05() {
assertTrue(gk05.canAdd());
}
public void testCanAdd06() {
assertTrue(!gk06.canAdd());
}
public void testCanAdd07() {
assertTrue(gk07.canAdd());
}
public void testCanAdd08() {
assertTrue(!gk08.canAdd());
}
public void testAdd01() {
assertEquals(0, gk01.add());
}
public void testAdd02() {
assertEquals(1, gk02.add());
}
public void testAdd04() {
assertEquals(3, gk04.add());
}
public void testAdd05() {
assertEquals(7, gk05.add());
}
public void testAdd07() {
assertEquals(12, gk07.add());
}
}

F.テスト実行

メニューから「実行」-「次を実行」-「JUnitテスト」を選択します。

「実行」-「次を実行」-「JUnitテスト」を選択

 

 

G.テスト結果表示(成功)

テストケースが起動され、テスト結果が左側の「JUnit」ビューに表示されます。正常に終了した場合は、何も表示されません。

テスト結果が表示される

 

 

H.テスト結果表示(失敗)

それでは、ソース(Gokei.java)を一部修正して、テストに失敗した場合を見てみましょう。

 

以下のようにadd()メソッドのwhile文の ”=” を削除後、ソースを保存して再度テストケースを実行してみます。

 

public int add(){

int ansWrk = 0;

while (min < max){
ansWrk = ansWrk + min;
min++;
}

return ansWrk;
}

 

テスト結果は以下のように出力されるはずです。

テスト結果が表示される

 

「JUnit」ビューに、想定と異なる結果となったメソッドが表示されます。

4. テストスイートの作成・実行

A.テストスイートの作成1

テストスイートとは、テストケースが複数ある場合に、それらを一括実行するためのものです。

パッケージを右クリックし、「新規」-「その他」を選択します。

パッケージを右クリックし、「新規」-「その他」を選択

 

 

B.テストスイートの生成2

左側で「Java」-「JUnit」を選択後、右側の「TestSuite」を選択し「次へ」をクリックします。

テストスイートの生成

 

 

C.テストスイートの設定

生成するテストスイートに関する情報を入力し、「終了」をクリックします。


テスト・スイート(T):

通常テストスイートは「AllTests」という名前が一般的です。


スイートに含まれるテスト・クラス(C):

右図では一つしかありませんが、通常はここで複数のテストクラスを選択します。

JUnit TestSuite クラスを作成

D.テストスイートの実行

以下のようなテストスイートが生成されるはずです。

 

import junit.framework.Test;
import junit.framework.TestSuite;
public class AllTests {

public static void main(String[] args) {
junit.textui.TestRunner.run(AllTests.class);
}

public static Test suite() {
TestSuite suite = new TestSuite("Test for default package");

//$JUnit-BEGIN$ // ┐
suite.addTest(new TestSuite(GokeiTest.class)); // ├この行が一括テストする
//$JUnit-END$ // │テストクラス分記述されます。
return suite; // ┘
}
}

実行方法については、テストケースの場合と同様です。

 


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.