Google Testを使ってみる - arosh/arosh.github.com GitHub Wiki

  • test-runner用のmainが含まれているので、テキトーにMakefileを書くと、テスト用バイナリが作れて良い
  • ASSERT_*は致命的なエラー (失敗した時点でテストを終了する)、EXPECT_*はそうでないエラー (失敗しても継続する)
  • EXPECT_EQはクラスに定義された==演算子を用いて判定を行う。C言語の文字列の中身の判定はEXPECT_STREQを使うと良い
  • TESTの引数にはアンダースコアを含んではならない。2つの引数は「グループ名」と「テストケース名」だと思えば良い
  • TEST_Fの第一引数はフィクスチャクラスの名前にする。フィクスチャクラス(::testing::Testを継承してSetUpとTearDownを実装したクラス)を継承したテストクラスを作って、そこでテストを実行するため、メンバは全てprotectedである必要があり、SetUp、TearDown、ctor、dtorはvirtualである必要がある
  • EXPECT_EQ(x,y) << "message";
  • boolを返す関数がtrueを返すことを確認するときは、EXPECT_PREDn(FuncName,Param1,Param2,...) を使うといい感じに表示できる
  • EXPECT_PREDnのフォーマットを見やすくしたいならEXPECT_PRED_FORMATnが使える
  • AssertionResultを返す関数を定義することで、自作のアサーションを定義できる
  • floatやdoubleの比較はEXPECT_(FLOAT|DOUBLE)_EQかEXPECT_NEAR(expected, actual, epsValue)を使う
  • SCOPED_TRACEを使うと、サブルーチン内でのアサーションが失敗した時に、そのサブルーチンを呼び出した箇所をわかりやすくするためのラベルが付けられる
  • 値のパラメータ化 … 便利なはずだけど、使い方がよく分からん
  • テストを一時的に無効にするためにはテストケース名の先頭にDISABLED_を付ける
  • privateなメソッドのテスト … 全く分からん