あるべるのIT関連メモ

素人エンジニアが何かするときに困ったものなどを参考程度にメモっておこうかと

Google Testの導入

Googleが公開するC/C++用Testing Framework "Google Test"の導入

  • Google Test の入手&ちょっと準備
wget http://googletest.googlecode.com/files/gtest-1.7.0.zip
unzip gtest-1.7.0.zip
cd gtest-1.7.0
mkdir lib

前準備として"GTEST_ROOT/lib"ディレクトリを作っておく

  • gtestライブラリのビルド

自分でコンパイル&アーカイブしてもいいのだけどcmakeが用意されているので上記で作成したlibディレクトリ内で

cmake ../
make

どうってことないですね(cmakeよく分かってません)。

  • 使い方(sampleが通ることを確認しておく)

■1つずつビルド
GTEST_ROOT/samples

g++ -I../include -L../lib sample1_unittest.cc sample1.cc -lgtest -lgtest_main

memo:

  • I../includ : gtest.h等関連ヘッダーへのインクルードパス
  • L../lib : gtestライブラリへのパス
  • lgtest : libgtest.a のリンク
  • lgtest_main : 自分でmain関数を書かない場合必要


■とりあえず全てのサンプルをビルド
ビルド用のディレクトリを準備(GTEST_ROOT/build_sample)

cmake -Dgtest_build_samples=ON ../
make

で全てのサンプルのビルドが自動で行われる。

  • 自分で書いたコードもテストしてみる
// mySample.cc
int add(int a, int b)
{
  return a+b;
}

// mySample.h
int add(int a, int b);

// test_mySample.cc
#include "gtest/gtest.h"
#include "mySample.h"

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

ちょっと雑だけどベタにコンパイル
g++ -IGTEST_ROOT/include mySample.cc test_mySample.cc -LGTEST_ROOT/lib -lgtest -lgtest_main
(GTEST_ROOTは各環境で置き換え)

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from TestAdd
[ RUN      ] TestAdd.add1
[       OK ] TestAdd.add1 (0 ms)
[----------] 1 test from TestAdd (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.