xUnitは単体テスト(メソッドなどの小さな単位のテスト)を行うためのフレームワークの総称です。xには言語の略語が入ります。例えばJUnit、PHPUnit、PyUnitです。このフレームワークに従って記述されたテストは次の様に動作します。
- setUpを最初に呼び出す。
- テストメソッドを呼び出す。
- tearDownを呼び出す。テストメソッドでエラーが起きてもtearDownを呼び出す。
- 任意の数のテストに対して1~3を繰り返す。
- すべてのテスト結果を出力する。
setUpにはテスト環境の作成、tearDownにはテスト環境の除去、が多くの場合で記述されます。いくつかのxUnitは全てのテストが終わるまで簡易な結果しか出力しません。そのようなxUnitを用いる時にはtearDownに独自のテスト結果の通知を記述することもあります。テストメソッド内では様々な種類のassertが使用できる様に用意されており、プログラムが期待通りの動作をしているか否かの記述を確認できます。このassertの用意はテストがコードそのものから離れる程効きます。画面上、セッション上などを参照するブラウザに絡んだテストでは特にその恩恵を感じます。
xUnitは任意の数のテストを実行し、すべてのテスト結果を出力します。この部分の管理において暗記のみをあてにするのは手間ですし、ど忘れなどの問題を引き起こしがちです。多くのIDE(少なくともEclipse、NetBeans、PhpStorm、PyCharm)はこの管理を手助けしてくれます。
例えば次の画像です。過去のテスト結果を反映して赤と緑で現在の問題の有無の識別、メソッド単位の実行ができます。
クラス単位の実行もショートカットキーや2クリックでできます。左端の結果マークはクラス内のテストメソッドが全て合格かそうでないかのマークです。