Cactus
Cactusって?
Cactusはサーバーサイドのテストフレームワークです。
JUnitを拡張して作成されており、
サーブレットやJSPのテストが可能です。
テストって?
プログラムを作るというのは、
コードを書いて終わりじゃないです。
仕様通りの動作をするか確認する必要があります。
この実際に動くかどうか確認することをテストと呼びます。
テストは単に、典型的なパターンで、
1回動けばOKというものではなく、
様々な場合に対応したテストをする必要があります。
例えば、自転車を作ったとき、
ペダルをこいで走ればOKというものではなく、
ブレーキをかければ止まらないといけないし、
ハンドルを引けば曲がらないといけません。
曲がれない、止まれない自転車、10キロ走るとすぐパンクするような自転車
には乗りたくありませんね。
最も簡単なテストの方法は、以下のようにクラスにテスト用のmain()メソッドを
書いて実行する方法です。
/**
* 三角形クラス
*/
public class TriangleShape{
/**
* 面積を取得します。
* @return 面積
* @param length 底辺
* @param height 高さ
*/
public double getLarge(double length, double height){
return length * heigth / 2;
}
/**
* テスト用メイン
*/
public void main(String[] args){
TriangleShape shape = new TriangleShape();
int large = shape.getLarge(4, 2);
System.out.println("large=" + large);
}
}
この例のようなクラスでも、
引数に渡す数値をゼロにしたり、マイナスにしたり、
様々な引数を想定する必要があります。
この場面のことをテストケースと呼びます。
正常系だけでなく、Exceptionを発生したりする異常系の
テストケースも忘れずにテストする必要があります。
これはこれで、簡単でいいんですが、以下のような問題があります。
- イチイチ結果を確認(目で見る)必要がある。
- テストケースが増えた場合、冗長になる。
- 将来、コードに変更を加えた場合、またイチイチテストして、イチイチ結果を目で見る必要がある。
めんどくさいなぁ。
テストケースを用意、テストケースを実行、結果を確認するのも
プログラムして、機械にやってもらおう。
というのがテストフレームワークです。
Javaでテストフレームワークと言えばJUnitが有名です。
こんな感じのテストケースを書きます。
public class TriangleShapeTest extends TestCase{
public TriangleShapeTest(String name){
super(name);
}
public void testGetLarge1(){
TriangleShape shape = new TriangleShape();
double large = shape.getLarge(4, 2);
assertTrue(large == 4);
}
}
テストフレームワークを使って便利なのは、
一発で、動作の確認がとれるというところです。
コードに修正を加えても、動作の確認が取れれば安心ですね。
ただ、テストケースを書く手間が必要なため、
最初はメンドクサイかもしれません。
ただ、後から沢山メンドクサイよりは、最初に一寸メンドクサイ
方がよいでしょう。
ちなみに、テストにはいくつか種類があり、
上のような1つのクラスのテストは単体テストと呼ばれます。
サーバーサイド
サーブレットのテストを行う場合、
単なるアプリケーションのテストに加えて、ちょっと問題があります。
それは、サーブレットを実行するのはサーブレットコンテナだということです。
main()やTestCaseからServletは実行できません。
Cactusでは、コンテナの動作を肩代わりする仕組みを提供してくれます。
Cactusを使ってみる
2002/8/27の最新版はCactus1.4です。
ダウンロードは
Downloads
のページから行えます。
J2EE1.2と1.3用にファイルが分かれています。
また、ANTはCactus独自タグが使われているようなので、
それ用のファイルも必要みたいです。
1.4ではチュートリアルがついてます。
Tomcat Quickstart
まだ手が出ない
とりあえず、簡単な上のチュートリアルを切り貼りして動かしてみました。
でも、その先はまだ行っていません。
Hello Worldを出して満足している感じですが、どうも、
最初がメンドクサイテストケースを書くのが、おっくうです。
一度開発プロジェクトで使おうと決めて、実体験してみないと、
本当にいいのか、使えるのか未だわかりません。。。
参考
WEB+DB Press vol.10
(2002/8/27)
もどる