Google Test是基于XUnice架构的C++编程语言的单元测试库。
单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。
集成测试
集成测试,也叫组装测试你或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。一些局部反映不出来的问题,在全局上很可能暴露出来。
功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
gtest断言
gtest中提供两种断言的宏:ASSERT宏,EXPECT宏。
ASSERT宏:当检查点失败时,退出当前函数。 EXPECT宏:当检查点失败时,继续往下执行。
常用类型检查:
(1)布尔类型检查
ASSERT_TRUE(condition) ASSERT_FALSE(condition)
EXPECT_TRUE(condition) EXPECT_FALSE(condition)
(2)数值类型检查
ASSERT_EQ(val1, val2); EXPECT_EQ(val1, val2); --- equal
ASSERT_NE(val1, val2); EXPECT_NE(val1, val2); --- not equal
ASSERT_LT(val1, val2); EXPECT_LT(val1, val2); --- less than
ASSERT_LE(val1, val2); EXPECT_LE(val1, val2); --- less equal
ASSERT_GT(val1, val2); EXPECT_GT(val1, val2); --- grater than
ASSERT_GE(val1, val2); EXPECT_GE(val1, val2); --- grater equal
(3) 字符串检查
ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); --- equal
ASSERT_STRNE(str1, str2); EXPECT_STRNE(str1, str2); --- not equal
ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str);
ASSERT_STRCASENE(str1, str2); EXPECT_STRCASENE(str1, str2);
TestCase事件
TestCase事件是挂在每个案例执行前后的,不过需要实现的是SetUp方法和TearDown方法:
1. SetUp()方法在每个TestCase之前执行 2. TearDown()方法在每个TestCase之后执行
单元测试特点
1. 独立:测试用例的测试结果不受其他测试的影响。
2.有效的组织架构,清晰的命名:各个测试用例针对不同的测试对象,而对单个测试对象而言,又可能有多个测试用例对应该对象的多个功能。
3. 可移植、可复用
4. 当用例失败时,提供尽可能多的有效信息