GoogleTestってなに?
Googleが作成したC/C++用のxUnit系単体テストフレームワーク
http://googletest.googlecode.com/
GoogleTestの何がいいの? ※個人的な所感
個人的にC/C++で単体テスト書くならGoogleTest一択です
- 他のC/C++用xUnitライブラリより
main()
など簡単に記載できる -
stdout
やstderr
を簡単にキャプチャすることができる -
exit()
などのデステストも標準サポート - XMLで結果を出力できるのでJenkinsなどに対応している
-
gcov/gcovr
と連携すればカバレッジの可視化も可能 - OSS。ここまで出来て無料
これから作成するライブラリについて
libgtest.a : google Testのテスト関数が全て入っているライブラリ
libgtest_main.a : 全てのテストケースを呼び出して実行するmain()
関数のオブジェクト。#実行時の引数で実行テストケースを指定することも可能。
基本的な使い方
以下URLなどを参照してテストファイルを作成する #Makefileの作成方法は後日記載予定
Google Test ドキュメント日本語訳 » 入門ガイド
http://opencv.jp/googletestdocs/primer.html
後述で作成したライブラリを利用してテスト実行オブジェクトを作成する
g++ -I${GTEST_DIR}/include path/to/your_test.cpp path/to/targetFunction.cpp libgtest.a libgtest_main.a -o your_test
出来上がったyour_test
を実行する
コンパイル手順
[budougumi0617@18:53:49] pwd [~/tmp]
/home/budougumi0617/tmp
[budougumi0617@18:49:17] wget http://googletest.googlecode.com/files/gtest-1.6.0.zip
[budougumi0617@18:53:51] unzip gtest-1.6.0.zip [~/tmp]
[budougumi0617@18:53:51] cd gtest-1.6.0 [~/tmp]
[budougumi0617@18:32:42] ./configure [~/tmp/gtest-1.6.0]
[budougumi0617@18:33:31] export GTEST_DIR=~/tmp/gtest-1.6.0
[budougumi0617@18:34:06] g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
[budougumi0617@18:34:28] ar -rv libgtest.a gtest-all.o
r - gtest-all.o
[budougumi0617@18:37:41] cd make [~/tmp/gtest-1.6.0]
libgtest.a Makefile
[budougumi0617@18:37:46] make gtest_main.o [~/tmp/gtest-1.6.0/make]
g++ -I../include -I.. -g -Wall -Wextra -c \
../src/gtest_main.cc
[budougumi0617@18:37:53] ar -rv libgtest_main.a gtest_main.o
ar: creating libgtest_main.a
a - gtest_main.o
[budougumi0617@18:38:29] cp libgtest_main.a ../ [~/tmp/gtest-1.6.0/make]
[budougumi0617@18:39:01] cd .. [~/tmp/gtest-1.6.0/make]
[budougumi0617@18:39:04] ls [~/tmp/gtest-1.6.0]
aclocal.m4 codegear CONTRIBUTORS lib make README xcode
build-aux config.log COPYING libgtest.a Makefile samples
CHANGES config.status fused-src libgtest_main.a Makefile.am scripts
cmake configure gtest-all.o libtool Makefile.in src
CMakeLists.txt configure.ac include m4 msvc test
#以上でライブラリファイル完成!Sampleメソッドは後日記載予定