日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gtest-断言

發(fā)布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gtest-断言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

斷言

ASSERT_*系列的斷言

當(dāng)檢查失敗時,退出當(dāng)前函數(shù)

EXPECT_*系列的斷言

當(dāng)檢查失敗時,繼續(xù)向下執(zhí)行

布爾值的檢查

Fatal assertionNonfatal assertionVerifies
ASSERT_TRUE(condition);EXPECT_TRUE(condition);condition is true
ASSERT_FALSE(condition);EXPECT_FALSE(condition);condition is false

數(shù)值型數(shù)據(jù)檢查

Fatal assertionNonfatal assertionVerifies
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

字符串檢查

Fatal assertionNonfatal assertionVerifies
ASSERT_STREQ(expected_str,actual_str);EXPECT_STREQ(expected_str,actual_str);the two C strings have the same content
ASSERT_STRNE(str1,str2);EXPECT_STRNE(str1,str2);the two C strings have different content
ASSERT_STRCASEEQ(expected_str,actual_str);EXPECT_STRCASEEQ(expected_str,actual_str);the two C strings have the same content, ignoring case
ASSERT_STRCASENE(str1,str2);EXPECT_STRCASENE(str1,str2);the two C strings have different content, ignoring case

返回成功和失敗

直接返回成功: SUCCEED()

返回失敗:

Fatal assertionNonfatal assertion
FAIL()ADD_FAILURE()

異常檢查

Fatal assertionNonfatal assertionVerifies
ASSERT_THROW(statement, exception_type);EXPECT_THROW(statement, exception_type);statement throws an exception of the given type
ASSERT_ANY_THROW(statement);EXPECT_ANY_THROW(statement);statement throws an exception of any type
ASSERT_NO_THROW(statement);EXPECT_NO_THROW(statement);statement doesn’t throw any exception

輸入?yún)?shù)的檢查

失敗的時候回返回詳細(xì)的信息,包括哪個參數(shù)的錯誤

Fatal assertionNonfatal assertionVerifies
ASSERT_PRED1(pred1, val1);EXPECT_PRED1(pred1, val1);pred1(val1) returns true
ASSERT_PRED2(pred2, val1, val2);EXPECT_PRED2(pred2, val1, val2);pred2(val1, val2) returns true
TEST(MultiPrime, Demo) {int m = 5, n = 6;EXPECT_PRED2(MultiPrime, m, n); }

如果還是嫌輸出的信息不夠詳細(xì)可以使用如下自定義格式的數(shù)據(jù)

Fatal assertionNonfatal assertionVerifies
ASSERT_PRED_FORMAT1(pred_format1, val1);|EXPECT_PRED_FORMAT1(`pred_format1, val1);pred_format1(val1) is successful
ASSERT_PRED_FORMAT2(pred_format2, val1, val2);EXPECT_PRED_FORMAT2(pred_format2, val1, val2);pred_format2(val1, val2) is successful
testing::AssertionResult AssertFoo(const char* m_expr, const char* n_expr, const char* k_expr, int m, int n, int k) {if (Foo(m, n) == k)return testing::AssertionSuccess();testing::Message msg;msg << m_expr << " 和 " << n_expr << " 的最大公約數(shù)應(yīng)該是:" << Foo(m, n) << " 而不是:" << k_expr;return testing::AssertionFailure(msg); }TEST(AssertFooTest, HandleFail) {EXPECT_PRED_FORMAT3(AssertFoo, 3, 6, 2); } // error: 3 和 6 的最大公約數(shù)應(yīng)該是:3 而不是:2

浮點(diǎn)數(shù)檢查

Fatal assertionNonfatal assertionVerifies
ASSERT_FLOAT_EQ(expected, actual);EXPECT_FLOAT_EQ(expected, actual);the two float values are almost equal
ASSERT_DOUBLE_EQ(expected, actual);EXPECT_DOUBLE_EQ(expected, actual);the two double values are almost equal

對兩個非常相近的數(shù)檢查

Fatal assertionNonfatal assertionVerifies
ASSERT_NEAR(val1, val2, abs_error);EXPECT_NEAR(val1, val2, abs_error);the difference between val1 and val2 doesn’t exceed the given absolute error

類型檢查,類型檢查失敗之后會導(dǎo)致編譯失敗

template <typename T> class FooType { public:void Bar() { testing::StaticAssertTypeEq<int, T>(); } };TEST(TypeAssertionTest, Demo) {FooType<bool> fooType;fooType.Bar(); }

參考:
http://code.google.com/p/googletest/wiki/GoogleTestPrimer

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

總結(jié)

以上是生活随笔為你收集整理的gtest-断言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。