编译之后,在 lib/.libs 目录下会生成动态和静态链接库,我比较喜欢动态库,生成文件较小,方便上传服务器。
1 #include <gtest/gtest.h> 2 3 int max(int a,int b) 4 { 5 return a > b ? a:b; 6 } 7 8 TEST(foo,max) 9 { 10 EXPECT_EQ(2,max(2,-1)); 11 EXPECT_EQ(3,max(2,3)); 12 } 13 14 int main(int argc,char** argv) 15 { 16 ::testing::InitGoogleTest(&argc,argv); 17 return RUN_ALL_TESTS(); 18 }
g++ test4.cpp -o test4 -Isrc/include -Lsrc/lib -lgtest -lgtest_main -pthread
需要注意的是,需要链接三个库,容易遗忘的是 -pthread
两种断言宏:ASSERT_前缀和 EXPECT_前缀的,前者会使测试终止,后者会忽略错误继续执行,一般使用后者。
断言宏后面可以使用 << 来输出一些自定义的错误信息,这些信息只会在断言失败时输出。
常用的宏有:
布尔型:TRUE、FALSE
数值型:EQ、NE、LT、LE、GT、GE (依次为 ==,!=,<,<=,>,>=)
字符串型:STREQ、STRNE、STRCASEEQ、STRCASENE (后面两个是忽略大小写的情况,前两者接收 char* 和 wchar_t* 类型,后两者只接收 char* 类型)
返回型:ADD_FAILURE(); 返回非致命失败; FAIL();返回致命失败;SUCCEED();返回成功。
异常检查:THROW、ANY_THROW、NO_THROW
类似布尔型:PRED1、PRED2、……、PRED5 (第一个参数为函数名,后面为函数参数,最多五个),功能更强大的是:PRED_FORMAT1、……、PRED_FORMAT5
浮点型:FLOAT_EQ、DOUBLE_EQ ,另外对相近的两个数的比较:NEAR
更多具体请参考:http://www.cnblogs.com/coderzh/archive/2009/04/06/1430364.html 或源码。