• このエントリーをはてなブックマークに追加

Visual StudioにGoogleMockを導入する手順も忘れないようにメモしながら入れてみようと思います。GoogleTestはGoogleMockの中に含まれるので、GoogleMockを入れれば、GoogleTestもついてくる。一石二鳥、早起きは三文の得、結構毛だらけ猫灰だらけだ。

導入環境

  • Windows 7
  • Visual Studio Express 2012  for Windows Desktop
  • GoogleMock 1.6.0

GoogleMockをダウンロード

GoogleMockをダウンロードしてきて、適当な場所に置きます。

https://code.google.com/p/googlemock/

Visual StudioでGoogleMockをビルド

Visual StudioでGoogleMockをビルドします。

まずは、msvc/2010配下に移動してフォルダの読み取り専用属性を外します。右クリックから[プロパティ] > [読み取り専用]のチェックを外す。

次に、gmock.slnをVisual Studioで起動します。Visual Studioの変換ウィザードが立ち上がり2010が2012用のプロジェクトに変換されるはず。

上のツールバーから[ビルド] > [ソリューションのビルド]でビルドまたは、F7で。そうすると、エラーが出まくるはず(´・ω・`)

以下のサイトに、解説方法が載っている。感謝しながらヘッダファイルを修正しよう。gmockだけど、gtestのファイルを修正する。

ブログズミ: Visual Studio 11 Beta で Google Test を使う

gmock\gtest\include\gtest\internal\gtest-port.h

ただし、GoogleTestならばこれでうまく行くけれども、GoogleMockは軽薄な奴なので、そうはいかない。追加で修正。

ソリューションエクスプローラに並んでいるプロジェクト(gmock,gmock_main,gmock_test)のプロパティを右クリックで開き、[構成プロパティ] > [C/C++] > [プリプロセッサ] >[プリプロセッサの定義]を選択して、以下のdefineを追加する。

_VARIADIC_MAX=10

image

gmock\msvc\2010\Debug\gmock_test.exeができるので、とりあえず動かしてみて、テストが走ればコンパイル成功。以下のライブラリが作成されます。

  • gmock.lib
  • gmock_main.lib

GoogleMockを使いたいプロジェクトの設定

GoogleMockを使いたいプロジェクトをVisual Studioで起動します。プロジェクトのプロパティを以下のように修正。gtestはgmockに含まれるので、ライブラリは必要ないことに注意。

  • gmockとgtestのインクルードディレクトリを設定 
    • C/C++ -> 全般 -> 追加のインクルードディレクトリ
      • \gmock-1.6.0\include
      • \gmock-1.6.0\gtest\include
  • gmock ライブラリを追加(gtestライブラリの代わり)
    • リンカー -> 全般 -> 追加のライブラリディレクトリ
      • \gmock-1.6.0\msvc\2010\Debug
    • リンカー-> 入力 -> 追加のライブラリ
      • gmock.lib
      • gmock_main.lib
  • ランタイムライブラリの修正
    • C/C++ -> コード生成-> ランタイムライブラリ
      • マルチスレッド デバッグ (/MTd)

また、_VARIADIC_MAX=10もプリプロセッサに追加する。

Debug用のメイン関数に <gmock/gmock.h>をインクルードする。また、main関数に、    ::testing::InitGoogleMock(&argc, argv);を追加。

#include "stdafx.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>

 
int _tmain(int argc, _TCHAR* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
 ::testing::InitGoogleMock(&argc, argv);
    return RUN_ALL_TESTS();
}

サンプルコードまで書こうとおもったけど、疲れたので今日は終わり。参考リンクを下にいろいろ貼っておきます。

参考