簡単なコードでGoogle Testを使ってみる [Google Test]
前回,Google Testを使えるようにしたので,今回は,ごく簡単なコードに対してGoogle Testを使ってみることにする.
というわけで,Google Testの使い方について検索するとよく出てきて定番っぽい,2つの変数を加算するadd関数について試してみる.
なるべく,実際使う構成に近い方がイメージしやすいと思うので(といいつつも,単にadd関数だけなんて作ること無いと思うのだけど...)適当なディレクトリに,add_projというディレクトリを作ってやって,ファイル構成は以下のようにしてやる.あと,cmakeを使ってビルドしてみる.
それぞれのファイルの内容は以下のようになる.
CMakeLists.txt(CMake用の設定ファイル)
ちなみに,GTEST_DIRは,前回Google Testをダウンロード,展開したディレクトリだ.
うちの場合だと,~/googletest/gtest-1.6.0/になる.なので,
add.cpp(add関数の定義)
add.h(add関数の宣言)
main.cpp(add関数を使用するmainの定義)
test/add_unittest.cpp(add関数のテスト定義)
では,ビルドしてみる.
ビルドは,ソースファイルがあるディレクトリとは別のディレクトリにする(これをout-of-source buildとよぶらしい).同じディレクトリでもいいのだが,CMakeはかなり中間ファイルを生成してごちゃごちゃするので,別ディレクトリにするのがおすすめだ.
今回は,add_projと同一階層にadd_buildディレクトリを生成して,以下のようにしてやる.
で,これによって,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の使い方について検索するとよく出てきて定番っぽい,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/になる.なので,
としてやる.実際には,.bashrcにでも記載してやるといい.export GTEST_DIR=~/googletest/gtest-1.6.0
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