読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Visual Studio で GoogleTest を使う

C++ TDD Visual Studio

先日の TDD BootCamp では Boost.Test を使って演習をした。
初めてBoost.Testを使ったけど、Boost自体のコンパイルに時間が掛かるは、テストコードのコンパイルに時間が掛かるわ、当日Linuxemacs の環境で固まるわで、ちょっとアレなので、今仕事でも使ってるGoogleTest をWindowsVisual Studio環境で動かしてみた。
ダウンロード、コンパイル、テストの作成といった一連の流れはこちらの通りだけど、備忘録を兼ねて残しておく。

手順

引用元手順を少し改変

  1. http://code.google.com/p/googletest/downloads/listからダウンロード
    • 試したのは1.5.0
  2. 解凍してmsvc/gtest.sln を実行
    • 変換ウィザードが動くので、「完了」を押す
  3. ソリューションごとビルド
    • gtest_unittest で Google Test のテストを行う
  4. パスの設定
    • Visual Studio のメニュー[ツール|オプション]を選択
    • 「プロジェクトおよびソリューション|VC++ディレクトリ」(一番上に隠れてる)を選択
    • 「ディレクトリを表示するプロジェクト」から「インクルードファイル」を選択し、Google Test のインクルードパス(ここでは「<配置フォルダ>\gtest-1.5.0\include」)を追加
    • 同じく「ライブラリファイル」を選択し、Google Test のライブラリパス(ここでは「<配置フォルダ>\gtest-1.5.0\msvc\gtest\Debug」)を追加
  5. テストを試すためのサンプルプロジェクトを作成(コンソールアプリケーション)
  6. 作ったプロジェクトのプロパティを開いて、ランタイムライブラリを「マルチスレッド デバッグ(/MTd)」に変更
    • これをやらないとリンクでわんさかエラーが出る
  7. テストを書く
    • テストコードのサンプルは下に
  8. 実行する
  9. JUnit形式のXMLファイルを出力
    • [構成プロパティ|デバッグ|コマンド引数]に"--gtest_output=xml"を記述することで、JUnit形式のXMLファイルを出力できる。これをHudsonに食わせるとテスト結果のグラフを見ることができる

テストコードのサンプル

#include <gtest/gtest.h>

// この2行を gtest/gtest.h に入れとけばライブラリリンクもいらないかな
#pragma comment( lib, "gtestd.lib" )
#pragma comment( lib, "gtest_maind.lib" )

TEST(GTestSample, Assert) {
  EXPECT_EQ(1, 1);
  EXPECT_EQ(2, 3);
}