16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google TestによるC++のテスト環境構築

Last updated at Posted at 2017-07-23

はじめに

Google Testは、Googleがオープンソースで公開しているC++のテストフレームワークです。

本稿では、Google Testを使ってC++のコードをテストするごく小さなプロジェクトの構成例を紹介します。
主に、これからGoogle Testによるテストを導入しようとしている人にとって、参考になればと思います。

筆者が作業した環境の情報は以下の通りです。

  • Mac OS X El Captain
  • CMake v3.8.2
  • Google Test v1.8.0

Mac環境ではありますが、 CMake を使っているので、大抵の環境で通用するやり方だと思います。
CMake自体は、公式サイトのバイナリや、Macであれば Homebrew によってインストールできます。

NOTE:

  • Google Test v1.8でディレクトリ構成が変わっているため、以降の記述について、v1.7以前を使う場合は変更が必要な部分があります。

プロジェクト構成例

ミニマムなソースツリーの構成を示します:

myapp/
├── MyApp.cpp
├── MyApp.hpp
└── test/
    ├── CMakeLists.txt
    ├── MyAppTest.cpp
    └── lib/
        └── googletest # git submodule

Google TestはGit submoduleとして追加します。
そのコマンド例は、以下のようになります:

googletestをsubmoduleとして追加
# shell
mkdir -p test/lib
git submodule add https://github.com/google/googletest.git test/lib/googletest
pushd test/lib/googletest
git checkout release-1.8.0
popd
git add test/lib/googletest
git commit -m "Add submodule googletest for testing"

サンプルコード

上のソースツリーを前提に、かんたんなソースコードとテストコードのサンプルを示します。

MyApp.cpp には、テスト用に適当なメソッドを定義します。

MyApp.hpp
class MyApp
{
public:
    static int multiply(int i, int j);
};
MyApp.cpp
#include "MyApp.hpp"

int MyApp::multiply(int i, int j)
{
    return i * j;
}

test/MyAppTest.cpp に、Google Testを使ったテストコードを記述します。

test/MyAppTest.cpp
#include "../MyApp.hpp"
#include "gtest/gtest.h"

TEST(multiply, base)
{
    EXPECT_EQ(1, MyApp::multiply(1,1));
}

テストの書き方については、記事末尾で参考リソースを紹介しています。

テスト用のCMake設定

上のようなテストコードに MyApp.cpp とGoogle Testをリンクしてビルドし、テスト用の実行ファイルを生成します。

CMakeの設定ファイルを、下の内容で作成します。

test/CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(myapp-test)

# Google TestのCMakeプロジェクトを追加し、Google Testをビルド
# ※v1.7以前はディレクトリ構成が異なる
add_subdirectory(lib/googletest/googletest)

# MyApp.cppを識別名"myapp"でコンパイル
add_library(myapp ../MyApp.cpp)
# MyAppTest.cppからmyapp-test実行ファイルをビルド
add_executable(myapp-test MyAppTest.cpp)
# ライブラリをリンクする
target_link_libraries(myapp-test myapp gtest_main)

これで、準備が整いました。

テストのビルドと実行

コマンド例を次に示します:

# shell
mkdir -p test/build # ビルド用ディレクトリ作成
cd test/build
cmake .. # CMakeLists.txtの内容に基づき、Makefileを生成
make # myapp-test実行ファイルをビルド
./myapp-test # テスト実行

例えば、次のような Makefile を用意しておくと、プロジェクトのルートディレクトリから簡単にテストの実行とクリーンアップが可能です。

Makefile
.PHONY: test clean

TEST_BUILD_DIR := test/build

test: $(TEST_BUILD_DIR)
        set -x && cd $(TEST_BUILD_DIR) && cmake .. && make && ./myapp-test

$(TEST_BUILD_DIR):
        mkdir -p $(TEST_BUILD_DIR)

clean:
        rm -rf $(TEST_BUILD_DIR)

参考

Google TestをXcodeから実行する方法

Google Testによる公式のガイドが下ですが、筆者は試していません。

ちなみに、本記事で示したCMakeによる環境が整っていれば、 cmake -G Xcode でテスト実行可能なXcodeプロジェクトを生成することは可能です。

テストの書き方について

公式の入門ドキュメントは以下です:

v1.6向けには、日本語訳があります。

また、リポジトリ内のサンプルコードも参考にできるでしょう。

リンク

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?