単体テストとモック【その2】

単体テストをするに当たって気をつけることは

テスト対象モジュールがテストしやすいこと

これに尽きます。


テストしやすいモジュールとは何でしょう?

設計時にそのことを意識しないまま作ったモジュールは
テストしやすいものではないでしょう。

品質は設計段階で作られるとは良く聞きますが
単体テストの品質は実装設計で作られると思います。

いかにテストしやすいクラス設計をするか

ともすれば
知識はネットで仕入れただけの実装もわからない「自称SE」が
顧客の要求をドキュメントに落としただけのものだけ渡し
このシステムのアーキテクチャはこれだから
オープンソースフレームワークをくっつけただけの絵を渡し
動くものを作らなければならないあなたが、スケジュールもタイトなのに
JUnit単体テストもやっとけよな
なんて言われた日にはテスト嫌いになるに決まってます。

自称SEが駆逐される日を待つよりは
何とか自分のペースで品質を上げる為に試行錯誤しましょうよ。
(一番良いのは、システムの仕様を作りやすいものにすることですが・・・)

モックを使うことで
ただでさえタイトなスケジュールを圧迫しては意味がありません。

その辺が私のモック嫌いの要因の一つです。

モジュールを細分化し
テストしやすいように仕様を単純にし
下のレイヤーから作ることで
モックをなるべく使用することなくJUnitを使い、回帰テストができるシステムにする

が、私の望む単体テスト


テストの技法とかMockの作り方とかよりも、
いかにテストしやすいモジュールを作るかを議論すべきだと思うんです。