GoogleMock(gMock)


FrontPage

GoogleMock?(gMock)導入手順

  1. サイトよりダウンロード http://code.google.com/p/googlemock/
  2. Cygwinを起動して、フォルダ作成.フォルダ配下にダウンロードしたファイルを置く。
    mkdir gmock
  3. gmockをコンパイルして、gmock-all.oを作る。
    cd /cygdrive/c/src/gmock
    ./configure
    make
  4. インクルード・パス(-I)で以下のパスを指定
    /cygdrive/c/src/gmock/include
    /cygdrive/c/src/gmock
  5. 以下のオブジェクトをテスト対象のオブジェクトにリンクする
    /cygdrive/c/src/gmock/src/gmock-all.o
  6. ースファイル(RunAllTests?.cpp)を./tests配下に以下のように作成
    #include "gtest/gtest.h"
    #include "gmock/gmock.h"
    
    int main(int argc, char* argv[])
    {
        ::testing::InitGoogleTest(&argc, argv);
        ::testing::InitGoogleMock(&argc, argv);
        return RUN_ALL_TESTS();
    }
  7. RunAllTests?.cppとgtest-all.o gmock-all.oを一緒にコンパイルして、exeファイル作成

MakefileのSample

# gcc を指定 C++も gccでコンパイルできるのが暗黙のルール
CC   = gcc
CPP  = g++

# 各マクロを定義して、ディレクトリの場所を教える
PRJ_BASE_DIR  = /cygdrive/c/****任意*****
SRC_DIR       = $(PRJ_BASE_DIR)/src
TESTS_DIR     = $(PRJ_BASE_DIR)/tests
MOCK_DIR      = $(PRJ_BASE_DIR)/mock
GTEST_ROOT    = /cygdrive/c/src/gtest
GMOCK_ROOT    = /cygdrive/c/src/gmock

# インクルードファイル
LOCAL_INCLUDE  = $(PRJ_BASE_DIR)/hogehoge.h

# GoogleTest では 以下の2つが必須
LOCAL_INCLUDE += $(GTEST_ROOT)
LOCAL_INCLUDE += $(GTEST_ROOT)/include
# GoogleMock では 以下の2つが必須
LOCAL_INCLUDE += $(GMOCK_ROOT)
LOCAL_INCLUDE += $(GMOCK_ROOT)/include

# ソースファイル
SRCS    = $(SRC_DIR)/hogehoge.c

# テストファイル
TEST_SRCS   = $(TESTS_DIR)/RunAllTest.cpp
TEST_SRCS  += $(TESTS_DIR)/hogehogeTest.cpp
TEST_SRCS  += $(TESTS_DIR)/mockTest.cpp

# モックファイル
MOCK_SRCS   = $(MOCK_DIR)/mock.c

# OBJ: オブジェクトファイルをまとめるマクロ
# ${SRCS: .c=.o} は .c を .oへ変換するマクロ
OBJ  = $(SRCS:.c=.o)
OBJ += $(TEST_SRCS:.cpp=.o)
OBJ += $(MOCK_SRCS:.c=.o)

# GoogleTest では 以下のgtest-all.oを一緒にコンパイル
OBJ += $(GTEST_ROOT)/src/gtest-all.o
# GoogleTest では 以下のgmock-all.oを一緒にコンパイル
OBJ += $(GMOCK_ROOT)/src/gmock-all.o

#コンパイル時のオプションを指定.CPPだとCPPFLAGSが暗黙のフラグ
CFLAGS = $(addprefix -I, $(LOCAL_INCLUDE))
CFLAGS += -g
CPPFLAGS = $(addprefix -I, $(LOCAL_INCLUDE))

#慣例として、 allをtargetに対して宣言する
TARGET = hoge
all:$(TARGET)

$(TARGET): $(OBJ) 
	$(CPP) -g $(OBJ) -o $(TARGET)

clean:
	rm -rf *.o *.exe
	
clean2:
	rm -rf *.o *.exe
	make

GoogleMock? Sample

GoogleMock? Sample