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) |
浙公网安备 33010602011771号