SSブログ

簡単なコードでGoogle Testを使ってみる [Google Test]

前回,Google Testを使えるようにしたので,今回は,ごく簡単なコードに対してGoogle Testを使ってみることにする.

というわけで,Google Testの使い方について検索するとよく出てきて定番っぽい,2つの変数を加算するadd関数について試してみる.

なるべく,実際使う構成に近い方がイメージしやすいと思うので(といいつつも,単にadd関数だけなんて作ること無いと思うのだけど...)適当なディレクトリに,add_projというディレクトリを作ってやって,ファイル構成は以下のようにしてやる.あと,cmakeを使ってビルドしてみる.
add_proj/
├── CMakeLists.txt
├── add.cpp
├── add.h
├── main.cpp
└── test
    └── add_unittest.cpp

それぞれのファイルの内容は以下のようになる.

CMakeLists.txt(CMake用の設定ファイル)
cmake_minimum_required(VERSION 2.6)
project(add)
enable_testing()
find_package(Threads)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

message(STATUS GTEST_DIR=$ENV{GTEST_DIR})

include_directories($ENV{GTEST_DIR}/include)
link_directories($ENV{GTEST_DIR}/lib)

add_executable(add_main main.cpp add.cpp)
add_executable(add add.cpp test/add_unittest.cpp)
target_link_libraries(add gtest gtest_main)
target_link_libraries(add ${CMAKE_THREAD_LIBS_INIT})
add_test(NAME add COMMAND add)

ちなみに,GTEST_DIRは,前回Google Testをダウンロード,展開したディレクトリだ.
うちの場合だと,~/googletest/gtest-1.6.0/になる.なので,
export GTEST_DIR=~/googletest/gtest-1.6.0
としてやる.実際には,.bashrcにでも記載してやるといい.

add.cpp(add関数の定義)
#include "add.h"

int add(int x, int y)
{
    return x + y;
}


add.h(add関数の宣言)
#ifndef ADD_H
#define ADD_H

int add(int x, int y);

#endif // ADD_H


main.cpp(add関数を使用するmainの定義)
#include <iostream>
#include "add.h"

int main()
{
    int x = 2;
    int y = 3;

    std::cout << x << " + " << y << " = " << add(x, y) << std::endl;

    return 0;
}


test/add_unittest.cpp(add関数のテスト定義)
#include <gtest/gtest.h>
#include "add.h"

TEST(TestAdd, add1)
{
    ASSERT_EQ(3, add(1,2));
}


では,ビルドしてみる.
ビルドは,ソースファイルがあるディレクトリとは別のディレクトリにする(これをout-of-source buildとよぶらしい).同じディレクトリでもいいのだが,CMakeはかなり中間ファイルを生成してごちゃごちゃするので,別ディレクトリにするのがおすすめだ.
今回は,add_projと同一階層にadd_buildディレクトリを生成して,以下のようにしてやる.
mkdir add_build
cd add_build/
cmake ../add_proj/
make


で,これによって,2つのバイナリが生成される.
add_mainとaddだ.
add_mainのほうは,単にadd関数によって2と3を加算した結果を表示するだけのプログラムで,addのほうがadd関数のテストになる.今回は1+2の結果が3になることをテストしている.

テストの実行は,./addでもいいし,make testでもいい.
ただし,make testだと,結果は詳細は表示されない../addと同等の表示をしたければ,make test ARGS=-Vとしてやればいい.

なお,今回はadd_mainというadd関数を使ったプログラムも作ったが,単にadd関数のテストだけをやりたければ,main.cppはいらないし,add_mainの生成もしなくていい.

Google Testは,今回の値の一致テスト以外にもいろんなことができる.それについてはまた別の機会に...

では,お試しあれ.

タグ:Google Test CMAKE
nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。