1
2

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】Google C++ Testing Frameworkをビルドして使ってみた

Last updated at Posted at 2015-02-06

#概要
Windowsで作ってたCUIアプリをCentOS6.6で使いたくて移植。
テスト通したかったのでGoogle testをビルドしたので手順とか載せておきます。
参考になれば幸い。

#入れたOS
CentOS6.6

#最新のGoogle Testを落とす・・・はずだった
ここから最新を落とす。

2015/02/06時点での最新は1.7.0。
(リリースを見る限りだと2013年9月から更新が無いんでしょうか・・・)

んで「最新のGoogle Testを落とす・・・はずだった」となっている理由なんだけど・・・

1.7.0がリンクに失敗する

多分やり方が悪いんだろうけどとりあえず試したことだけ書くので同様にはまった人が居たら何か頑張ってください!!!

とりあえず普通にREADMEに従って静的ライブラリを創りリンクすると

undefined reference to `testing::internal::EqFailure

で失敗。
関数名的にASSERT_EQを使ってる箇所でエラーってるのかと思いきや2箇所でしかエラー出てないしそうでもない様子。
色々試したけれど原因も掴めないしぐぐっても似たような症状はあるものの、
静的ライブラリリンクすれば治るんじゃね?みたいな回答しか無くてぶっちゃけ上記エラーケース的に考えればホントそれ。一体何をリンクすればいいのやら・・・

Google Testにはサンプルが入っててそっちにはgtest_main.aというライブラリがある。WinやMacの場合このライブラリが必須なんだけど別にこれをリンクしても変わらずで、時間も無かったのもあって深追いせず諦めました。

#Google Test 1.6.0を落とす
というわけで1つ前の1.6.0で解説。

修正がフィックスされてない古いバージョンのテストフレームワークを使うのは流石にどうなのって話はある。今回はテストができないよりはマシという方針になってるので悪しからず
(一応補足だけど1.6.0から1.7.0が機能追加なのか修正fixなのかとかは全然確認してないのでもしかしたら問題無いかもしれない)

ここから落としてきて適当に展開しましょい。
ダウンロードにはwget使ってるので無い人は sudo yum install wget してくだし。

$ mkdir for_work
$ cd for_work
$ wget https://googletest.googlecode.com/files/gtest-1.6.0.zip
$ unzip gtest-1.6.0.zip

展開してもディレクトリに入る必要なし。
README見れば書いてあるけど次のようにコマンド打てばおk。

$ g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc; ar -rv libgtest.a gtest-all.o

これで libgtest.a が作成されるので後はこれをリンクすれば良い。

#ビルド

ビルド時に -pthread が必要だと思う。
それ以外は単純に静的ライブラリをリンクすれば良い。
一応コンパイル例も載せてみる。

$ g++ 任意option -pthread ソース libgtest.a -o unittest

#実行

[----------] Global test environment tear-down
[==========] 57 tests from 18 test cases ran. (736 ms total)
[  PASSED  ] 54 tests.
[  FAILED  ] 3 tests, listed below:

Win版では動いてもプラットフォームが異なればテスト通らないっすねー・・・

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?