Google Testのセットアップ(Visual Studio編)
TDD(TestDrivenDevelopment)って一度やってみたいとずっと思ってたんです。
でもずっと組み込みC言語のクロスコンパイル環境というプアな環境だったためなかなかチャレンジが難しくできずにいました。
しかし今はVisual StudioでWindows用アプリを書いています。これはチャンス!ということでまずはセットアップから。
環境
- Windows 7 Ultimate JA (or XP Pro SP3 EN)
- Visual Studio 2008 Standard
- Google Test V1.5
手順
基本的には参照先の通り。ただしライブラリへのリンクは#pragma commentではなくプロジェクトのプロパティにて行ないました。Debug/Release両方でユニットテストするかどうかは謎ですが、ソースコード上に書くと静的にリンクしてしまうのでプロパティに書くより自由度が減ると思ったためです。
- プロジェクトのプロパティ | リンカ | 入力 | 追加の依存ファイル
- Debug構成時:gtestd.lib gtest_maind.lib の追加
- Release構成時:gtest.lib gtest_main.lib の追加
実環境への適用
サンプル動きましたー。じゃあ本番のプログラムでもやってみようか…とするところでまたつまづくわけです。どうやって既存のプロジェクトに当てはめていけばいいもんかと。
本当はこのページのようにユニットテスト用のTestプロジェクトを追加→Releaseビルド時はビルド対象から外す…としたかったのですけど、リンクエラーが解決できなくて断念(本番プログラムがサードパーティライブラリをスタティックリンクしまくってるせいだと思うんすけど)。
しょうが無いので、
- 構成マネジャでTestっていう構成を追加
- main関数だけ別ファイル化(main.cpp)
- Testフォルダをプロジェクトに追加し、この中にテストファイルを随時追加する
- Test構成時はmain.cppをビルド対象から外す
- Debug/Release構成時はTestフォルダ内の全ファイルをビルド対象から外す、main.cppをビルド対象とする
という感じで強引に。
これで本番のプログラムにおいてもユニットテストのオンオフが出来るようになりました。
それでもまだはまったこと
これ以降は完全に個人的な問題ですが。
最後に
ここまで準備してさあやるぞって段になって急遽アサイン変更、このプロジェクトから離れることに。なんてこったい…。
Google Testのセットアップ(Cygwin編)
前回のように切ない事態になったわけですけども、新しいプロジェクトでもやっぱりTDDにチャレンジしてみようかと。
今度はLinuxでC++です。ライブラリとリンクするようなこともありません。至ってシンプルな構成。まさに初めてのTDDにふさわしい!
Linux初めてだけどね…。
telnetでgdbのCUIデバッグとか苦痛すぎるので出来ればEclipseとか使いたいところ。ひとまずCygwin使ってWindows上でビルドできないか試してみました。まあ、肝心の本番プログラムは動かなかったのですけど、Google Testはビルドできたよってことでメモ残しておきます。
手順
これまたGoogle TestのREADMEそのままですね。
- Cygwinのインストール
- bash起動
- ${GTEST_DIR}/makeに移動
- make
- ビルドが成功するとsample1_unittest.exeというユニットテストのサンプルができる
- ./sample1_unittest.exe
- 実際に実行してみて動くかどうかのチェック
という感じでサンプル動きましたー。