プログラムのテストと言っても、
単体テスト => 結合テスト => システムテスト
と、段階的に行うのが一般的なようです。
各テストをどのような観点で行うかはさておき、Javaで書いたプログラムの単体テストを支援するフレームワークとしてJUnitがあります。
NetBeansには標準でJUnitが入っていますので、ちょっと使ってみたいと思います。
(利用環境はNetBeans6.8ですが、他のVersionでも多分一緒)
1.テスト対象のクラスの作成
適当な名前でプロジェクトを作成して、以下のコードを作成します。(パッケージ等は適当に。)
今回のテスト対象クラスFactorialClass。
package jp.taka.factorial;
/**
* 階乗計算をするクラスです。。。
* @author taka
*/
public class FactorialClass {
/**
* ループを使って階乗を計算します。
* @param x
* @return x!
*/
public static int factorial(int x){
int fact = 1;
for(int i=x; i>=1;i--){
fact *= i;
}
return fact;
}
/**
* 再帰を使って階乗を計算します。
* @param x
* @return x!
*/
public static int factorial2(int x){
if(x > 1)
return x*factorial2(x-1);
else
return 1;
}
}
一応Mainも。。
package jp.taka.factorial;
public class Main {
public static void main(String[] args) {
int f1 = FactorialClass.factorial(4);
int f2 = FactorialClass.factorial2(4);
System.out.println(f1);
System.out.println(f2);
}
}
ここまでで、NetBeansのプロジェクトエクスプロラー(?)はこんな感じになると思います。
2.テストコード作成
ここからがJUnitの出番です。(今回はJUnit4を使います)
プロジェクトを右クリックして新規->その他を選択すると、ウィンドウが一つ開くので、下図のように選択し、次へをクリックします。
次の画面はこんな感じで、完了をクリック。
ここまでくると、NetBeansがテストクラスのひな形を作成してくれます。
それを下のようにいじります。
ここでのポイントは、
・assertEquals():第一引数と第二引数が一致しているか判定
・@Testアノテーション:メソッドがテストメソッドであることを明示する
package jp.taka.factorial;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author taka
*/
public class FactorialClassTest {
public FactorialClassTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
/**
* FactorialClass#factorial(int x)のテスト
*/
@Test
public void testFactorial() {
System.out.println("chk factorial");
int x = 4;
int expResult = 4*3*2*1;
int result = FactorialClass.factorial(x);
assertEquals(expResult,result );
}
/**
* FactorialClass#factorial2(int x)のテスト
*/
@Test
public void testFactorial2() {
System.out.println("chk factorial 2");
int x = 4;
int expResult = 4*3*2*1;
int result = FactorialClass.factorial2(x);
assertEquals(expResult,result );
}
}
3.テストをしてみよう
プロジェクト名を右クリックして、テストをクリックします(下図)
@Testアノテーションがついたテストメソッドが実行されます。
以下のような結果が出れば成功です。
ちなみに、テスト結果NGのモノがあった場合は、下図。
4.まとめ
今回は、NetBeansでJUnitを使って簡単なテストを行いました。
今回使ったのはassertEqualsだけですが、他にも色々ありますので、興味のある方は是非。
また、JUnit以外にも、CUnit(C言語用),CppUnit(C++言語用)などなどxUnitシリーズは沢山ありますので、研究でも役立つ・・・かも?
1 件のコメント:
初めまして。
テスティングフレームワーク、今ではほとんどの開発環境で使えるのがうれしいですね。
コメントを投稿