不想直接就写我认为的重点和难点的位置。还是从基础开始说起吧。
GoogleTest是Google开发的一套单元测试框架。能够在不同平台上(Windows,Linux,Mac OS X,Cygwin,Windows CE和Symbian)为C++编写的程序做单元测试。
它是基于xUnit架构(如JUnit)的测试框架,支持自动发现测试,丰富的断言集及XML的测试报告。
gtest的官方网站是:http://code.google.com/p/googletest/
官方网站有一个wiki,能够获取到你所需的所有的指引信息
http://code.google.com/p/googletest/wiki/DevGuide
http://code.google.com/p/googletest/wiki/AdvancedGuide
另外,有一个中文Blog介绍的比较完善:
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
下面是一个简单的示例:
“Google包装了一系列EXPECT_* 和ASSERT_*的宏,而EXPECT系列和ASSERT系列的区别是:
1. EXPECT_* 失败时,案例继续往下执行。
2. ASSERT_* 失败时,案例终止运行。
布尔值检查
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_TRUE( condition ) ; | EXPECT_TRUE( condition ) ; | condition is true |
ASSERT_FALSE( condition ) ; | EXPECT_FALSE( condition ) ; | condition is false |
数值型数据检查
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_EQ( expected , actual ); | EXPECT_EQ( expected , actual ); | expected == actual |
ASSERT_NE( val1 , val2 ); | EXPECT_NE( val1 , val2 ); | val1 != val2 |
ASSERT_LT( val1 , val2 ); | EXPECT_LT( val1 , val2 ); | val1 < val2 |
ASSERT_LE( val1 , val2 ); | EXPECT_LE( val1 , val2 ); | val1 <= val2 |
ASSERT_GT( val1 , val2 ); | EXPECT_GT( val1 , val2 ); | val1 > val2 |
ASSERT_GE( val1 , val2 ); | EXPECT_GE( val1 , val2 ); | val1 >= val2 |
字符串检查
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_STREQ( expected_str , actual_str ); | EXPECT_STREQ( expected_str , actual_str ); | the two C strings have the same content |
ASSERT_STRNE( str1 , str2 ); | EXPECT_STRNE( str1 , str2 ); | the two C strings have different content |
ASSERT_STRCASEEQ( expected_str , actual_str ); | EXPECT_STRCASEEQ( expected_str , actual_str ); | the two C strings have the same content, ignoring case |
ASSERT_STRCASENE( str1 , str2 ); | EXPECT_STRCASENE( str1 , str2 ); | the two C strings have different content, ignoring case |
*STREQ*和*STRNE*同时支持char*和wchar_t* 类型的,*STRCASEEQ*和*STRCASENE*只接收char*”
——以上引号内部引用自“http://www.cnblogs.com/coderzh/archive/2009/04/06/1430364.html”