めも。
セットアップ
Windows10にて。 必要なものをインストール。
- googletest: https://github.com/google/googletest
- eclipse: Eclipse 日本語化 | MergeDoc Project
- mingw: MinGW - Minimalist GNU for Windows プロジェクト日本語トップページ - OSDN
- mingw は windows版eclipseのfull edition内にもある
googletestビルド
googletestはダウンロード後、ビルドする。
eclipse でテストを実行
eclipse側設定
- [設定]>[GCC C++ Compiler]>[インクルード]>[インクルードパス]に
${workspace_loc:/テストする対象があるディレクトリ名}
- [設定]>[GCC C++ Compiler]>[インクルード]>[インクルードパス]に
ビルドしたgoogletestのディレクトリへのパス\include
- [設定]>[MinGW C++Linker]>[ライブラリ]>[ライブラリ]に
gtest
を追加 (他必要なものを適宜追加) - [設定]>[MinGW C++Linker]>[ライブラリ]>[ライブラリ検索パス]に
ビルドしたgoogletestのディレクトリへのパス\lib
を追加 (他必要なものを適宜追加)
テストプログラム
RUN_ALL_TESTS()
ですべてのテストを実行する。最も簡単な Main.cpp
は以下に。
テスト対象をインクルードしていないので、実際には #include XXX.h
などの記述が入りテストを行う。
#include "gtest\gtest.h" TEST() { /* テスト内容を記述 */ } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
ビルド後、[実行]>[実行の構成]>[C/C++ Unit]>[新規構成]として新しい実行の構成をつくる。 その後、[C/C++ Testing]欄の Test Runner を [Google test runner] に切り替えて実行をする。
googletest記述例
基本的な記述例はgoogletest/samplesにある。 他の各種アサーションについては
に説明あり。
アサーションには ASSERT_*
と EXPECT_*
の二種類があり、ASSERT_*
は致命的なエラーとして関数の実行を中止する。
EXPECT_*
での失敗( 例:EXPECT_EQ(a, b)
:a==b
になってほしいが、実際はそうならなかった )は失敗しても実行を中断しない。
自分で定義したエラーメッセージを出力する場合は <<
で付け足せばいい。
EXPECT_EQ(1+1, 3) << " 1+1 shoud be 2" << i;
例えばfloat の比較は EXPECT_FLOAT_EQ(expected, actual)
で行い、4ULPs(unit in the last place)の誤差まで許容する。
Google C++ Mocking Framework
mocking frameworkと合わせて使いたい。
クックブックの日本語訳版は クックブック — Google Mock ドキュメント日本語訳。