[{"data":1,"prerenderedAt":326},["ShallowReactive",2],{"page-\u002Fcpp\u002Fboost\u002Fcpp-google-test":3},{"id":4,"title":5,"body":6,"description":319,"extension":320,"meta":321,"navigation":293,"path":322,"seo":323,"stem":324,"__hash__":325},"content\u002Fcpp\u002Fboost\u002FCpp Google Test.md","Cpp Google Test",{"type":7,"value":8,"toc":317},"minimark",[9,33,36,66,105,112,115,259,274,313],[10,11,12,13,17,18,21,22,21,25,28,29,32],"p",{},"Google Test (gtest) 的核心思想是通过",[14,15,16],"strong",{},"宏 来简化测试代码。要熟练使用 gtest，你需要掌握它的","命名规则、",[14,19,20],{},"核心断言","、",[14,23,24],{},"浮点数比较",[14,26,27],{},"字符串比较","以及进阶的",[14,30,31],{},"测试夹具","。",[10,34,35],{},"最长使用的两个宏： TEST和TEST_F，内部编写测试代码和断言。",[37,38,43],"pre",{"className":39,"code":40,"language":41,"meta":42,"style":42},"language-cpp shiki shiki-themes github-light github-dark","TEST(TestSuiteName, TestName) {\n    \u002F\u002F 测试代码与断言\n}\n","cpp","",[44,45,46,54,60],"code",{"__ignoreMap":42},[47,48,51],"span",{"class":49,"line":50},"line",1,[47,52,53],{},"TEST(TestSuiteName, TestName) {\n",[47,55,57],{"class":49,"line":56},2,[47,58,59],{},"    \u002F\u002F 测试代码与断言\n",[47,61,63],{"class":49,"line":62},3,[47,64,65],{},"}\n",[67,68,69,83,96],"ul",{},[70,71,72,75,76,21,79,82],"li",{},[14,73,74],{},"TestSuiteName（测试套件名）："," 逻辑上的分类（如 ",[44,77,78],{},"OrderManagerTest",[44,80,81],{},"MathUtilsTest","），同一类的测试用例用同一个套件名。",[70,84,85,88,89,21,92,95],{},[14,86,87],{},"TestName（测试用例名）："," 具体的测试点（如 ",[44,90,91],{},"CalculateTotalSuccess",[44,93,94],{},"DivideByZeroThrows","）。",[70,97,98],{},[99,100,101,102,32],"em",{},"注意：名称中不能包含下划线 ",[44,103,104],{},"_",[10,106,107,108,111],{},"gtest中的断言分为两类，一类是非致命断言：如果断言是失败的就会打印错误，允许",[14,109,110],{},"允许当前函数继续向下执行","。推荐绝大多数场景使用。一个是致命断言，发生错误，断言失败就会直接退出当前测试。",[10,113,114],{},"以上两个分别为EXPECT_* 和 ASSERT_* 。",[116,117,118,135],"table",{},[119,120,121],"thead",{},[122,123,124,130],"tr",{},[125,126,127],"th",{},[14,128,129],{},"基础断言 (EXPECT_ 可替换为 ASSERT_)",[125,131,132],{},[14,133,134],{},"说明",[136,137,138,154,168,184,199,214,229,244],"tbody",{},[122,139,140,148],{},[141,142,143],"td",{},[14,144,145],{},[44,146,147],{},"EXPECT_TRUE(condition)",[141,149,150,151],{},"期望条件为 ",[44,152,153],{},"true",[122,155,156,163],{},[141,157,158],{},[14,159,160],{},[44,161,162],{},"EXPECT_FALSE(condition)",[141,164,150,165],{},[44,166,167],{},"false",[122,169,170,177],{},[141,171,172],{},[14,173,174],{},[44,175,176],{},"EXPECT_EQ(val1, val2)",[141,178,179,180,183],{},"期望 ",[44,181,182],{},"val1 == val2","（两者相等）",[122,185,186,193],{},[141,187,188],{},[14,189,190],{},[44,191,192],{},"EXPECT_NE(val1, val2)",[141,194,179,195,198],{},[44,196,197],{},"val1 != val2","（两者不相等）",[122,200,201,208],{},[141,202,203],{},[14,204,205],{},[44,206,207],{},"EXPECT_LT(val1, val2)",[141,209,179,210,213],{},[44,211,212],{},"val1 \u003C val2","（Less Than）",[122,215,216,223],{},[141,217,218],{},[14,219,220],{},[44,221,222],{},"EXPECT_LE(val1, val2)",[141,224,179,225,228],{},[44,226,227],{},"val1 \u003C= val2","（Less Equal）",[122,230,231,238],{},[141,232,233],{},[14,234,235],{},[44,236,237],{},"EXPECT_GT(val1, val2)",[141,239,179,240,243],{},[44,241,242],{},"val1 > val2","（Greater Than）",[122,245,246,253],{},[141,247,248],{},[14,249,250],{},[44,251,252],{},"EXPECT_GE(val1, val2)",[141,254,179,255,258],{},[44,256,257],{},"val1 >= val2","（Greater Equal）",[10,260,261,262,265,266,269,270,273],{},"由于计算机存储浮点数（",[44,263,264],{},"float",", ",[44,267,268],{},"double","）存在精度误差，使用 ",[44,271,272],{},"EXPECT_EQ(0.1 + 0.2, 0.3)"," 往往会失败。gtest 提供了专用的浮点数比较宏：",[37,275,277],{"className":39,"code":276,"language":41,"meta":42,"style":42},"\u002F\u002F 1. 自动判断（推荐）：判断两者是否“几乎相等”（默认在 4 个 ULP 误差范围内）\nEXPECT_NEAR(val1, val2, abs_error) \u002F\u002F 允许指定 abs_error 范围内的误差\n\n\u002F\u002F 2. 快捷宏\nEXPECT_FLOAT_EQ(f1, f2)  \u002F\u002F 针对 float 的近似比较\nEXPECT_DOUBLE_EQ(d1, d2) \u002F\u002F 针对 double 的近似比较\n",[44,278,279,284,289,295,301,307],{"__ignoreMap":42},[47,280,281],{"class":49,"line":50},[47,282,283],{},"\u002F\u002F 1. 自动判断（推荐）：判断两者是否“几乎相等”（默认在 4 个 ULP 误差范围内）\n",[47,285,286],{"class":49,"line":56},[47,287,288],{},"EXPECT_NEAR(val1, val2, abs_error) \u002F\u002F 允许指定 abs_error 范围内的误差\n",[47,290,291],{"class":49,"line":62},[47,292,294],{"emptyLinePlaceholder":293},true,"\n",[47,296,298],{"class":49,"line":297},4,[47,299,300],{},"\u002F\u002F 2. 快捷宏\n",[47,302,304],{"class":49,"line":303},5,[47,305,306],{},"EXPECT_FLOAT_EQ(f1, f2)  \u002F\u002F 针对 float 的近似比较\n",[47,308,310],{"class":49,"line":309},6,[47,311,312],{},"EXPECT_DOUBLE_EQ(d1, d2) \u002F\u002F 针对 double 的近似比较\n",[314,315,316],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":42,"searchDepth":56,"depth":56,"links":318},[],"Google Test (gtest) 的核心思想是通过宏 来简化测试代码。要熟练使用 gtest，你需要掌握它的命名规则、核心断言、浮点数比较、字符串比较以及进阶的测试夹具。","md",{},"\u002Fcpp\u002Fboost\u002Fcpp-google-test",{"description":319},"cpp\u002Fboost\u002FCpp Google Test","I4PGwEopYDNkfoYyDWlzJrPZ33l9ycoHHLwESt9ozNI",1791042461414]