JUnit
最近、これでもかというくらいJUnitに触っている。
なのでちょっと自分メモを残しておく。
基本的なところからいくと、
・TestCaseを継承したクラスでテストケースを作る。
・TestCaseではsetUp→testの名前のつくメソッド→tearDownの順に実行される。
・TestSuiteで複数のテストケースをまとめられる。
・TestSetupを継承したクラスを使えば、テスト全体の初期処理を行える。
そしてちょっと深いところでは、
・TestSuiteを含めたTestCaseでは、まずsuiteメソッド(static)が呼び出され実行される。
suiteメソッドが無かった場合、デフォルトのTestSuiteが作られてTestCase中に存在する
testの名前のついたメソッド全てがaddTestされて呼び出される準備が行われる。
・suiteメソッドでTestSetupのサブクラスをnewしてreturnすることで、
TestSetupを実行することができる。
TestSetupもコンストラクタ・setUp・addされたTestCase・tearDownの順にメソッドが起動する。
・TestCaseクラスのインスタンスはTestCaseクラス中の実行されるテストメソッドの数だけ
作成される。
で、ちょっと思ったのが
・Eclipseで開発をする場合、本体のソースとTestCaseのソースはソースフォルダーを
別にして同一パッケージで作成する。test用のパッケージと本体のパッケージを分けてしまうと
publicなメソッドのテストしかできないが、ソースフォルダーが違っていても
同一パッケージで作成すればPackagePrivateなメソッドまでのテストができる。
・assertのためのユーティリティメソッドなど、よく使う可能性のあるメソッドは
TestCaseクラスを継承した共通クラスに作成すると便利。
もちろん、その他のテストケースクラスは共通テストケースを継承して作成する。
・テストごとにインスタンスが作成されるJUnitの仕組み上、テスト全体を通して保持したい値は
staticな変数にするしかないが、staticな変数を作るよりも別途Singletonクラスのような、
リソースを保持・管理するクラスを作成したほうが便利。
などなど、まだまだあれこれいじり始めると構造的に難しい部分があって、
なかなか考えたりするのが大変だったりするわけです。
まあ、次回の開発ではこういうことを踏まえてよりよいテストを考えねばなと。
一応、今までに読んだ本としては、
Java/Eclipseソフトウェアテスト チュートリアルブック (Front Programmer Series)
- 作者: 安藤利和
- 出版社/メーカー: 秀和システム
- 発売日: 2003/09/26
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (6件) を見る
- 作者: ビンセントマソル,テッドハスティード,Vincent Massol,Ted Husted,クイープ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/05
- メディア: 単行本
- クリック: 55回
- この商品を含むブログ (43件) を見る
両方ともいい本だと思います。でももう少し具体例がほしいところか。
つか、自分で作るしかないのかなぁ。