bambooflow Note

リファレンス

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

GooglTestリファレンス


使いかたメモ。
全部じゃないです。




アサーション

基本


Fatal assertion Nonfatal assertion Verifies
ASSERT_TRUE(condition); EXPECT_TRUE(condition); condition is true
ASSERT_FALSE(condition); EXPECT_FALSE(condition); condition is false

Fatal assertion : 致命的なアサーション、実行を止めます。
Nonfatal assertion : 非致命的なアサーション、実行を継続します。

例)ASSERT_TRUE( 10 == 9 );
[ FAILED ]


2つの値の比較


Fatal assertion Nonfatal assertion Verifies
ASSERT_EQ(expected, actual); EXPECT_EQ(expected, actual); expected == actual
ASSERT_NE(val1, val2); EXPECT_NE(val1, val2); val1 != val2
ASSERT_LT(val1, val2); EXPECT_LT(val1, val2); val1 < val2
ASSERT_LE(val1, val2); EXPECT_LE(val1, val2); val1 <= val2
ASSERT_GT(val1, val2); EXPECT_GT(val1, val2); val1 > val2
ASSERT_GE(val1, val2); EXPECT_GE(val1, val2); val1 >= val2

例) int a=10, b=5;
  ASSERT_LE( a, b ) << "aはbよりも小さくなければなりません.";
test.cpp:23: Failure
Expected: (a) <= (b), actual: 10 vs 5
aはbよりも小さくなければなりません.
[ FAILED ]

文字列比較


Fatal assertion Nonfatal assertion Verifies
ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); 2つのC文字列の一致
ASSERT_STRNE(str1, str2); EXPECT_STRNE(str1, str2); t2つのC文字列の不一致
ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str); 2つのC文字列の一致, ignoring case
ASSERT_STRCASENE(str1, str2); EXPECT_STRCASENE(str1, str2); 2つのC文字列の不一致, ignoring case

浮動小数点比較


Fatal assertion Nonfatal assertion Verifies
ASSERT_FLOAT_EQ(expected, actual); EXPECT_FLOAT_EQ(expected, actual); 2つのfloat型の値がほぼ一致
ASSERT_DOUBLE_EQ(expected, actual); EXPECT_DOUBLE_EQ(expected, actual); 2つのdouble型の値がほぼ一致

Fatal assertion Nonfatal assertion Verifies
ASSERT_NEAR(val1, val2, abs_error); EXPECT_NEAR(val1, val2, abs_error); 2つの値(val1,val2)が許容誤差(abs_error)以内

  • 述部形式
EXPECT_PRED_FORMAT2(::testing::FloatLE, val1, val2);
EXPECT_PRED_FORMAT2(::testing::DoubleLE, val1, val2);


デステスト


デステストを書き込み、コードが予想されるエラーでクラッシュすることを確認する。
gtest特有?普通は、クラッシュしないようにテストするのが普通だけど。。

Fatal assertion Nonfatal assertion Verifies
ASSERT_DEATH(statement, regex`); EXPECT_DEATH(statement, regex`); statement crashes with the given error
ASSERT_DEATH_IF_SUPPORTED(statement, regex`); EXPECT_DEATH_IF_SUPPORTED(statement, regex`); if death tests are supported, verifies that statement crashes with the given error; otherwise verifies nothing
ASSERT_EXIT(statement, predicate, regex`); EXPECT_EXIT(statement, predicate, regex`); statement exits with the given error and its exit code matches predicate


メッセージ


::testing::Message msg
msg << "func(1)の出力が1ではありません";
EXPECT_EQ( 1, func(1) ) << msg;


メイン記述


#include<gtest.h>

int main( int argc, char* argv[] )
{
    ::testing::InitGoogleTest( &argc, argv ); 
    return RUN_ALL_TESTS();
}
 





参考

  • http://code.google.com/p/googletest/wiki/GoogleTestPrimer
  • http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide

タグ:

GoogleTest gtest
記事メニュー
目安箱バナー