▲ | ▼ | 目次 | EclipseTop |
サンプルとして以下のようなプログラムを作成し、実行することとします。
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;
}
}
メニューから「ファイル」-「プロパティ」を選択します。
左側の「Javaのビルド・パス」を選択し、「ライブラリー」タグで「外部JARの追加」をクリックします。
「plugins\ org.junit_3.8.1」フォルダの「junit.jar」を開きます。
追加されたJUnit.jarの「ソース添付」を選択し、「編集」をクリックします。
「外部ファイル」をクリックして以下のファイルを選択し、「OK」をクリックします。
「ロケーション・パス」:Plugins/org.eclipse.jdt.source_2.1.1/src/org.junit_3.8.1/junitsrc.zip
「OK」をクリックすれば設定完了です。
テストしたいクラスを右クリックし、「新規」-「その他」を選択します。
今回は「Gokei.java」クラスをテストすることにします。
左側で「Java」-「JUnit」を選択後、右側の「TestCase」を選択し「次へ」をクリックします。
生成するメソッド・スタブを選択し、「次へ」をクリックします。
今回は「setUp()」をチェックします。
テスト・ケース(C):通常テストケースクラス名は「テストクラス名 + “Test”」とします。
スーパークラス(S):必ず「junit.framework.TestCase」とします。
テストするメソッドを選択し、「終了」をクリックします。
今回は「canAdd()」と「add()」メソッドを選択します。
テストケースの記述にはアサーションメソッドを使用します。
メソッド名 | テスト内容 |
---|---|
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());
}
}
メニューから「実行」-「次を実行」-「JUnitテスト」を選択します。
テストケースが起動され、テスト結果が左側の「JUnit」ビューに表示されます。正常に終了した場合は、何も表示されません。
それでは、ソース(Gokei.java)を一部修正して、テストに失敗した場合を見てみましょう。
以下のようにadd()メソッドのwhile文の ”=” を削除後、ソースを保存して再度テストケースを実行してみます。
public int add(){
int ansWrk = 0;
while (min < max){
ansWrk = ansWrk + min;
min++;
}
return ansWrk;
}
テスト結果は以下のように出力されるはずです。
「JUnit」ビューに、想定と異なる結果となったメソッドが表示されます。
テストスイートとは、テストケースが複数ある場合に、それらを一括実行するためのものです。
パッケージを右クリックし、「新規」-「その他」を選択します。
左側で「Java」-「JUnit」を選択後、右側の「TestSuite」を選択し「次へ」をクリックします。
生成するテストスイートに関する情報を入力し、「終了」をクリックします。
テスト・スイート(T):
通常テストスイートは「AllTests」という名前が一般的です。
スイートに含まれるテスト・クラス(C):
右図では一つしかありませんが、通常はここで複数のテストクラスを選択します。
以下のようなテストスイートが生成されるはずです。
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; // ┘
}
}
実行方法については、テストケースの場合と同様です。