基本的にいまのプロジェクトは GUI の絡んだコードばかり書いているのでユニットテストを行おうにも簡単にはいかず、結局ほとんど人力でやっているのですが、ちょっとした GUI の絡まないクラスを実装する事になって、ちょうどいいのでここだけ切り離して単体テストをユニットテストを使ってやってみようと思い立ちました。
で、まあ以前試した CppUnit とか CxxTest も頭に浮かんだんですが、コンパイラ (Borland C++ Compiler) の独自拡張など使わないのであれば VS2005 + NUnit という選択肢もあるかな、ということで NUnit を試してみました。
テストスイートの方を C++/CLI のクラスライブラリ (DLL) として作成し、テストする側のクラスはコンソールアプリとしてプロジェクト作ってその中にネイティブコードを実装する、といった形でやってみました。完全に C++/CLI で作ってしまうと後で BCB でビルドできなくなってしまうのでこんな感じで分割させました。
導入には上記の記事を参考にしました。多少情報が古くてクラス名などが変わったりしていましたが、大体は書かれている通りに進める事で簡単にテストを実行してグリーンバーを出すところまでいけました。 GUI でテスト結果が見られると言うのは楽しいですね。
GUI とロジックがちゃんと分割されていて、且つ他のクラスへの依存がもう少し薄ければ他のクラスもこうやってテスト作れるんだろうけどなあ……。設計も徐々に見直して一通り自動テストできるようにしたいものです。
追記
よくよく考えるとテストする側のプロジェクトはただのダミーなんですけど、これって別に無くてもいいんですよね。単なるテスト用のクラスライブラリに全部突っ込んでしまえばよかったのでした。