C++でのテスト技法

例外が投げられるかどうか

catchしたらテストOK。catchせず通る、もしくは想定した例外以外が投げられたらテスト失敗とする。

浮動小数点数の比較

Comparing Floating Point Numbers, 2012 Edition

シングルトン

シングルトンのテスト

ディレクトリの存在チェック

テスト用のディレクトリをリポジトリに登録する場合、バージョン管理システムの管理ディレクトリが問題になる場合がある。
そのため、すべてのディレクトリを比較するのではなく、目的のディレクトリがすべて存在するかのチェックを行う。

テスト用公開インタフェース

testableなインタフェースのために、本来ブラックボックス化されるべきprivateインタフェースをpublicにしなければならない場合がある。
そういう設計を嫌う場合は、テスト用のクラスをfriend登録することができる。

テスト用現在日時

現在日時に依存するシステムはテストしにくい。
そのため、ライブラリによって提供される現在日の時取得関数を直接使用するのではなく、カスタマイゼーションポイントを用意し、ダミーの値をいつでも返せるようにしておくことで、testableにすることができる。