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 : 非致命的なアサーション、実行を継続します。
Nonfatal assertion : 非致命的なアサーション、実行を継続します。
例)ASSERT_TRUE( 10 == 9 );
[ FAILED ]
[ 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 ]
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特有?普通は、クラッシュしないようにテストするのが普通だけど。。
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;
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