閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

Google Testを使ってみた(だけ)

なんとなく、C++で実装しているプログラムのテストをGoogle Testを使ってやってみよう、と思いたち、とりあえずインストールしてみたのでメモ。Visual Studio 2005を使用しています。

http://code.google.com/p/googletest/からGoogle Testをダウンロード。今日時点での最新版は1.6.0なので、gtest-1.6.0.zip。

zipを適当なディレクトリに展開すると、直下にmsvcというディレクトリがあるので、この中のgtest.slnを開く。このソリューションファイルはVisual Studio .NET 2003で作られたもののようなので、手元のVisual Studio 2005で開けるようソリューションのフォーマットを変換する(これはVSが勝手にやってくれる)。このとき、zipの中身は全部読み込み専用になっているためファイルの上書きができないのでmsvcフォルダ内のファイルだけ読み込み専用フラグを外しておく。

ソリューションを開いたら何も考えずにソリューションのビルドを実行。エラーも警告もなく無事終了。

ビルドできたらオプション画面を開いて[プロジェクトおよびソリューション]-[VC++ ディレクトリ]の設定で「インクルードファイル」に"include/"、「ライブラリファイル」に"msvc/gtest/debug/"をそれぞれ追加する。

次にテスト用のプロジェクトを作成する。新しいプロジェクトの作成を実行し、C++のWin32コンソールアプリケーションを作成して、プロジェクトのプロパティから以下の設定を変更する。

  • [構成プロパティ]-[C/C++]-[コード生成]の「ランタイム ライブラリ」を"マルチスレッド デバッグ (/MTd)"に変更。
  • [構成プロパティ]-[リンカ]-[入力]の「特定のライブラリの無視」に"msvcprtd.lib;MSVCRTD.lib"を追加。

試しにサンプルにあるテストコードを使ってテストをしてみる。

これをビルドして実行すると、以下のような結果が出力される。

f:id:wata_d:20120229122814p:plain

テストを失敗させるとNG部分が赤くなる。

f:id:wata_d:20120229122815p:plain

見やすくていいですね。

入門ガイドを見るとgtestd.libを追加せず、gtest.vcprojをソリューションに追加して使うほうがベターなのかもしれません。