玩转Google单元测试框架gtest系列之二:断言

发表于:2010-3-31 14:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CoderZh    来源:www.cnblogs.com/coderzh

  一、前言

  这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:

  1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。

  2. EXPECT_* 系列的断言,当检查点失败时,继续往下执行。

  二、示例

// int型比较,预期值:3,实际值:Add(1, 2)
EXPECT_EQ(3, Add(12))
//

  假如你的Add(1, 2) 结果为4的话,会在结果中输出:

g:\myproject\c++\gtestdemo\gtestdemo\gtestdemo.cpp(16): error: Value of: Add(12)
  Actual:
4
Expected:
3

  如果是将结果输出到xml里的话,将输出:

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

  如果你对自动输出的出错信息不满意的话,你还可以通过操作符<<将一些自定义的信息输出,通常,这对于调试或是对一些检查点的补充说明来说,非常有用!

  下面举个例子:

  如果不使用<<操作符自定义输出的话:

for (int i = 0; i < x.size(); ++i)
{
    EXPECT_EQ(x[i], y[i]) 
<< "Vectors x and y differ at index " << i;
}

  看到的结果将是这样的,你根本不知道出错时 i 等于几:

g:\myproject\c++\gtestdemo\gtestdemo\gtestdemo.cpp(25): error: Value of: y[i]
  Actual: 
4
Expected: x[i]
Which 
is3

  如果使用<<操作符将一些重要信息输出的话:

for (int i = 0; i < x.size(); ++i)
{
    EXPECT_EQ(x[i], y[i]) 
<< "Vectors x and y differ at index " << i;
}

  从输出结果中就可以定位到在 i = 2 时出现了错误。这样的输出结果看起来更加有用,容易理解:

g:\myproject\c++\gtestdemo\gtestdemo\gtestdemo.cpp(25): error: Value of: y[i]
  Actual: 
4
Expected: x[i]
Which 
is3
Vectors x and y differ at index 
2

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号