google gtest

安装

c++ 必须升级到支持c++11

git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER="c++" -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" ../
make
sudo make install

如果上述代码依然失败,请删除 -stdlib=libc++ 该选项,在失败请删除 -stdlib=libc++。我是在删除该选项之后成功的,OS为MacOS,ubuntu应该同理。

会在 /usr/local/lib64/libgtest.a 使用时需要加-lpthread 线程库一起使用

gtest中断言的宏可以分为两类:一类是ASSERT宏,另一类就是EXPECT宏了。

  • ASSERT_系列:如果当前点检测失败则退出当前函数
  • EXPECT_系列:如果当前点检测失败则继续往下执行
  • 直接返回成功:SUCCEED()
    • 如果你对自动输出的错误信息不满意的话,也是可以通过operator<<能够在失败的时候打印日志,将一些自定义的信息输出。
    • 例: ASSERT_TRUE(funciton)<<xxxxx<<endl;

1、布尔值检查

断言 描述
ASSERT_TRUE(参数) 期待结果是true
ASSERT_FALSE(参数) 期待结果是false

2、数值型数据检查

断言 描述
ASSERT_EQ(参数1,参数2) 传入的是需要比较的两个数 equal
ASSERT_NE(参数1,参数2) 不等于才返回true
ASSERT_LT(参数1,参数2) 小于才返回true
ASSERT_GT(参数1,参数2) 大于才返回true
ASSERT_LE(参数1,参数2) 小于等于才返回true
ASSERT_GE(参数1,参数2) 大于等于才返回true

3、字符串比较

断言 描述
ASSERT_STREQ(expected_str, actual_str) 两个C风格的字符串相等才正确返回
ASSERT_STRNE(str1, str2) 两个C风格的字符串不相等时才正确返回
ASSERT_STRCASEEQ(expected_str, actual_str) 两个C风格的字符串忽略大小写相等才正确返回
ASSERT_STRCASENE(str1, str2) 两个C风格的字符串忽略大小写不相等时才正确返回

4、异常检查

断言
ASSERT_THROW(statement, exception_type)
ASSERT_ANY_THROW(statement)
ASSERT_NO_THROW(statement)

5、浮点型检查

断言
ASSERT_FLOAT_EQ(expected, actual)
ASSERT_DOUBLE_EQ(expected, actual)

5、对相近的两个数比较

断言
ASSERT_NEAR(val1, val2, abs_error)

-lgtest -lpthread [-lgtest_main:有时没写main函数的程序可以使用着个库]

学习示例
学习示例2

posted on 2021-07-27 23:34  lodger47  阅读(106)  评论(0)    收藏  举报

导航