GoogleTest を VisualStudio 2008 で使う

GoogleTest は C++ 用のユニットテストフレームワークです。複数のプラットフォームに対応していてとても良いのですが、設定で苦労するのはつまらないので、VisualStudio 2008 で使うときのメモとして書いておきます。

ダウンロード

テストの際にはモックがあると便利なので、GoogleMock のアーカイブを取得しました。1.4.0 の時点ではGoogleMock のアーカイブ中に GoogleTest が含まれています。

GoogleMock: http://code.google.com/p/googlemock/

アーカイブを展開

ダウンロードしたアーカイブを展開します。

ソリューションの作成

VisualStudio でソリューションを作成します。

GoogleTest プロジェクトの追加

VisualStudio で既存のプロジェクトの追加で展開した GoogleMock のフォルダの下の gtest/msvc/gtest.vcproj、gtest/msvc/gtest_main.vcproj を追加します。※VC ランタイムを DLL とする場合(VisualStudio のデフォルトの設定です) は、gtest/msvc/gtest-md.vcproj、gtest_main-md.vcproj を追加します。
VisualStudio 2008 ではプロジェクトの変換ウィザードが動くので指示にしたがって変換します。

テストケース用プロジェクトの追加

ソリューションにテストケースを作成するプロジェクトを作成するか、既存のプロジェクトを使用します。

テストケース用プロジェクトのプロジェクトの依存関係

テストケース用プロジェクトのプロジェクトの依存関係に、gtest、gtest_main を追加します。

テストケース用プロジェクトのインクルードフォルダを追加

テストケース用のプロジェクトの C++ 全般の追加のインクルードディレクトリに gtest/include フォルダを追加します。 (相対パスにしておくといいかも)

テストケース用プロジェクトの VC ランタイム設定を修正

VC ランタイム設定がデフォルトでは DLL になっているので、GoogleTest の方でスタティックを使用したときには、テストケース用のプロジェクトも合わせてスタティックに変更します。
C/C++ -> コード生成 -> ランタイムライブラリ

テストケースの記述

テストケースを記述します。

こんな感じです。
メイン関数は gtest_main プロジェクトに含まれているので不要です。

#include


TEST( TestCase01, testFunc01 )
{
EXPECT_EQ( 3, 0 );
}

テストの実行

デバッグ -> デバッグなしで開始 で実行します。デバッグなしで開始すると、コマンドプロンプトが自動的に閉じないのでテスト結果を目視できます。