TL;DR
http://bitrage.de/wp/google-test-with-xcode-6-and-c11
こっちのほうが元情報で、画像付きで分かりやすい
準備
- Downloads - googletest から1.7.0をダウンロード
- 任意のツールでzipを解凍して、gtest-1.7.0/xcode/gtest.xcodeprojを開く
- プロジェクトナビゲーターでgtestを選択して、gtest-frameworkのBuild Settingsを開く
-
C++ Language Dialectを
GNU++11 [-std=gnu++11]
に変更 -
C++ Standard Libraryを
libc++(LLVM C++ standard library with C++11 support)
に変更 -
OS X Deployment Targetを
Compiler Default
に変更
-
C++ Language Dialectを
- gtest-frameworkをビルドする(Cmd+B)
- プロジェクトナビゲーターのProductsにビルドされたフレームワークが在るので、altキーを押しながら任意のフォルダにドラッグアンドドロップする
- googletestを使いたいXcodeプロジェクトにテスト用のCommand Line Toolターゲットを追加する
- OS X -> Applicationにある
- LanguageはC++
- テスト用ターゲットのBuild Phases -> Link Binary With Librariesに*5.*でドラッグアンドドロップしたフレームワークを追加する
- +マーク押すか、Finderからドラッグアンドドロップ
- メニューバーからProduct –> Scheme –> Tests and then Product –> Scheme –> Edit Schemeを選択
- テスト用ターゲットを選択してRunのEnvironment Variablesに
DYLD_FRAMEWORK_PATH
というキーを追加する- Valueは*7.*で追加したフレームワークがあるpath
- テスト用フレームワークのmain.cppの
main()
関数の引数を変更する-
int main(int argc, const char * argv[])
->int main(int argc, char * argv[])
-
const
を外す - はずさないとgtestのinitが面倒
-
-
- 準備完了!!!!!!!!!!!!!!!!!!!!!!!!
使ってみる
テスト対象のターゲットに下記のようなコード追加する
// calc.h
class calc {
public:
template<class T>
static T add(T a, T b) {
return a + b;
}
};
test書く
#include "gtest/gtest.h"
#include "calc.h"
TEST(calc, add) {
EXPECT_EQ(calc::add(1, 2), 3);
EXPECT_NE(calc::add(1, 1), 3);
}
int main(int argc, char * argv[]) {
::testing::InitGoogleTest(&(argc), argv);
return RUN_ALL_TESTS();
}
雑にmain.cppに書いたけどクラスとかに対応するヘッダファイル作って、そこにテスト書いたほうがいいと思う。
テスト用のターゲットにヘッダファイル追加して、テスト書いたらOK。
終わり。
参考
-
http://bitrage.de/wp/google-test-with-xcode-6-and-c11
- これの手順を日本語にしただけです。画像付きなのでこっちのほうが分かりやすい
-
https://groups.google.com/forum/#!topic/googletestframework/EBY-mkPD4A8
- Xcodeの"Command Line Tool"のtemplateのままだとビルドエラーになる