基本用法
程序中引用#include<gtest/gtest.h>
编译时加入参数-lgtest
gtest的主要用法和assert类似:
1 | ASSERT_TRUE(condition); |
assert在条件为假时中止程序,expect则只会报错。
简单测试
创建一个测试:
- 使用
TEST()
宏定义和命名一个测试函数。它们就是普通的C++的无返回值函数。 - 函数中可以使用任何C++表达式,以及GTest中的断言。
- 如果任一断言失败了(终止或非终止的),或者如果测试崩溃了,该测试失败;反之成功。
1 | TEST(test_case_name, test_name) { |
捆绑测试
如果有多个测试使用类似的数据,可以使用捆绑测试(text fixture)。它允许几个不同的测试复用相同的配置。
创建一个捆绑:
- 从
::testing::Test
派生一个类。使用protected:
或public:
,因为我们需要能从子类访问捆绑的成员。 - 在类中声明任何你想用的对象。
- 如果有必要,实现默认构造函数或者
SetUp()
函数来为测试准备数据。 - 如果有必要,实现一个析构函数或者
TearDown()
函数来释放在SetUp()
中分配的资源。 - 如果需要,定义用于共享的子例程。
用 TEST_F()
代替 TEST()
,这样就可以访问捆绑测试中的对象和子例程了:
1 | TEST_F(test_case_name, test_name) { |
例如
1 | class QueueTest : public ::testing::Test { |
Main函数
可以参考下面的样板:
1 |
|
一个神奇的问题
编写一个demo的时候,遇到了C++的一个很迷的问题,就是模版类的头文件不能够和模版类的实现.cpp
分离开
例如:
1 | /* |