您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 >
單元測試框架Google Test系列之 - 斷言
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/10 13:49:56 ] 推薦標(biāo)簽:

一、前言

這篇文章主要總結(jié)gtest中的所有斷言相關(guān)的宏。 gtest中,斷言的宏可以理解為分為兩類,一類是ASSERT系列,一類是EXPECT系列。一個(gè)直觀的解釋是:

1. ASSERT_* 系列的斷言,當(dāng)檢查點(diǎn)失敗時(shí),退出當(dāng)前函數(shù)(注意:并非退出當(dāng)前案例)。

2. EXPECT_* 系列的斷言,當(dāng)檢查點(diǎn)失敗時(shí),繼續(xù)往下執(zhí)行。
二、示例

// int型比較,預(yù)期值:3,實(shí)際值:Add(1, 2)
EXPECT_EQ(3, Add(1, 2))
//

假如你的Add(1, 2) 結(jié)果為4的話,會在結(jié)果中輸出:
g:myprojectc++gtestdemogtestdemogtestdemo.cpp(16): error: Value of: Add(1, 2)
  Actual:4
Expected:3

如果是將結(jié)果輸出到xml里的話,將輸出:(關(guān)于將結(jié)果輸出 為xml,見:http://www.cnblogs.com/coderzh/archive/2009/04/10/1432789.html)

<testcase name="Demo" status="run" time="0" classname="AddTest">
      <failure message="Value of: Add(1, 2)   Actual: 4 Expected: 3" type=""><![CDATA[g:myprojectc++gtestdemogtestdemogtestdemo.cpp:16
Value of: Add(1, 2)
  Actual: 4
Expected: 3]]></failure>
</testcase>

如果你對自動輸出的出錯(cuò)信 息不滿意的話,你還可以通過操作符<<將一些自定義的信息輸出,通常,這對于調(diào)試或是對一些檢查點(diǎn)的補(bǔ)充說明來說,非常有用!

下 面舉個(gè)例子:

如果不使用<<操作符自定義輸出的話:
for (int i = 0; i < x.size(); ++i)
{
    EXPECT_EQ(x[i], y[i]);
}

看到的結(jié)果將是這樣的,你根本不知 道出錯(cuò)時(shí) i 等于幾:
g:myprojectc++gtestdemogtestdemogtestdemo.cpp(25): error: Value of: y[i]
  Actual: 4
Expected: x[i]
Which is: 3

如 果使用<<操作符將一些重要信息輸出的話:
for (int i = 0; i < x.size(); ++i)
{
    EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;
}

從輸出結(jié)果中可 以定位到在 i = 2 時(shí)出現(xiàn)了錯(cuò)誤。這樣的輸出結(jié)果看起來更加有用,容易理解:
g:myprojectc++gtestdemogtestdemogtestdemo.cpp(25): error: Value of: y[i]
  Actual: 4
Expected: x[i]
Which is: 3
Vectors x and y differ at index 2

上一頁12345下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd