Google开源C++单元测试框架gTest 2:gTest断言

一、前言

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

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

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

二、示例

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

 

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

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

如果是将结果输出到xml里的话,将输出:(关于将结果输出为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:\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])
;
}


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

g:\myproject\c ++ \gtestdemo\gtestdemo\gtestdemo.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;
}


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

g:\myproject\c ++ \gtestdemo\gtestdemo\gtestdemo.cpp( 25 ): error: Value of: y[i]
  Actual: 
4
Expected: x[i]
Which 
is 3
Vectors x and y differ at index 
2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值