您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 >
单元测试框架Google Test系列之 - 断言
作者:网络转载 发布时间:[ 2013/12/10 13:49:56 ] 推荐标签:

一、前言

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

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

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

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

假如你的Add(1, 2) 结果为4的话,会在结果中输出:
g:myprojectc++gtestdemogtestdemogtestdemo.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:myprojectc++gtestdemogtestdemogtestdemo.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: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;
}

从输出结果中可 以定位到在 i = 2 时出现了错误。这样的输出结果看起来更加有用,容易理解:
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下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd