Google Test 導入
今までテストコードとか全然ちゃんと書いていなかったのですが,それはまずいなと思うに至りGoogle Test ドキュメント日本語訳を参考にGoogle Testを導入することにしました.
とりあえず,入れ方も良く分かっていない状態だったので検索をかけたら,idojunさんのアイコンが出てきてちょっとびっくりしました.やっぱり企業の方のコードだとテストもきっちりしてるんだなと妙な納得をしてみたりw
自宅PCにはVS2008 Professionalが入っていたので以下はそれにGoogle Testを利用するための自分のための覚書です.
(VS2003ならデフォルトでソリューションファイルが用意されてます)
- Google TestのDownloadからzipファイルをダウンロード
- cmakeを使ってVS2008用のソリューションファイルを作成してビルド(結構時間かかる)してライブラリを作成
そろそろ眠いので続きは起きてからやります.
俺,明日起きたらCoccoのアルバム買ってTestマスターになるんだ(死亡フラグ)QtとTestちゃんとマスターしたらそれなりにマシなコードは書けるようになるかな.ヘッポコプログラマーなんで精進しないと。
以下追記
VSのプロジェクトで実際のテストを行う手順は以下の通り.
- プロジェクトにgtest.libなど作成したライブラリを追加
- インクルードパスも追加
- ::testing::Testを継承したテスト用クラスを作成
- TEST_F(Type,test_name)としてテスト関数を定義
- main関数に"::testing::InitGoogleTest(&argc,argv);" "return RUN_ALL_TESTS();"の2文を追加
これでテストが可能に。
今回はノンパラベイズの実装の前準備として各種の確率分布を表現するクラスを作ってみてテストを行いました.コード内の例外処理をしっかり書いて,EXPECT_ANY_EXCEPTION()マクロでエラー入力に対してちゃんと例外をスローしているかを確認をするテストとサンプリング結果と期待値がちゃんと似た値になるかのテストを行いました.そうしたらDirichlet分布のサンプリングについてのテスト結果が明らかにおかしくて引数の順番間違えという初歩的なミスが発見出来ました.
テストってホント大事ですね(水野晴郎風
8月23日追記
OpenCVと連携しようと思ったら謎のエラーでハマって困っていたのですが
id:takminさんが同様の事例で悩まれていて解決法を残して下さったのでその通りやったら解決しました!
takminさんはホント神様やでー・・・・・ありがとうございました.