VisualStudio2008 professionalからIDE標準で単体テスト機能(ブラックボックステスト)が付いているので使ってみた。
俺は今まで単体テストはRSpecぐらいしかやったことがなかったし、何かライブラリを作った時はそれを使うGUI付きサンプルアプリケーションを作ることでしか動作確認してこなかったけど、これは次回からどんどん使っていく事にした。
この種のテストをブラックボックステストと呼ぶらしい。テスト対象のクラスの関数1つずつをブラックボックスと見るテストで、入出力の値に注目する。ある値を関数に入れてみて、予想した値が返ってくるかチェックすることで、関数が仕様を満たしているかチェックする。
今回はBenchmarkCounter.NETの中の処理時間を計るためのOrg.Shokai.Util.Benchmark.Counterクラスのテストを作った。Startメソッドで計測開始し、Stopメソッドで停止、その間の処理時間をミリ秒で保存できる。Start/Stopを複数回行った場合、その間の平均処理時間も求める事が出来る。
テストでは、出力値が正しい値になっているかどうかチェックする。このBenchmarkCounterのテストでは
- 処理時間を取得するメソッドの場合
→ 時間の値が0以上でなければエラー - 計測回数を取得するメソッドの場合
→ 何回か計測してみて、計測回数が合わなければエラー - 計測中かどうか?フラグの場合
→ Startメソッドにfalseだったらエラー
→ Stopメソッド後にtrueだったらエラー
Read more




重厚にして、小気味よい一冊。
「人工物」におけるデザインとは何か?
私には敷居が高かったかも・・・