GoogleTest测试框架
基本测试用例是GoogleTest中最简单的测试单元,用于测定某个特定功能的行为。每个测试用例都是一个独立的函数,以TEST
宏定义。
- TEST宏:
TEST
宏定义了一个测试用例。它接收两个参数,第一个是测试用例集的名称(通常用类名或模块名),第二个是测试用例的名称。 - GoogleTest提供了多种断言来验证测试结果,如
EXPECT_EQ
(相等)、EXPECT_TRUE
(为真)等。
1 |
|
常用断言:
EXPECT_EQ(val1, val2)
: 验证 val1
和 val2
是否相等。
EXPECT_NE(val1, val2)
: 验证 val1
和 val2
是否不相等。
EXPECT_TRUE(condition)
: 验证条件 condition
为 true
。
EXPECT_FALSE(condition)
: 验证条件 condition
为 false
。
EXPECT_NEAR(val1, val2, abs_error)
: 验证 val1
和 val2
之间的差值是否在 abs_error
之内(适用于浮点数)。
测试夹具类:
测试夹具类用于在多个测试用例之间共享共同的设置和清理代码。通过使用测试夹具类,可以避免重复代码,提升测试的可维护性。
- 当多个测试用例需要相同的初始化和清理工作时。
- 当需要在测试用例之间共享资源(如文件、数据库连接等)时。
测试夹具类需要继承::testing::Test
1 |
|
override
关键字是重写关键字,在CXX中,没有这个关键字子类也可以重写父类的方法。但是有这个关键字以后,编译器会进行检查。虚函数是为了多态用的,可以用基类指针调用派生类的方法;纯虚函数是为了定义接口类用的。
SetUp()
方法:这个方法在每个测试用例之前自动调用,用于设置测试环境,比如初始化对象或分配资源。TearDown()
方法:这个方法在每个测试用例之后自动调用,用于清理测试环境,比如释放资源或关闭连接。一旦定义了测试夹具类,就可以在测试用例中使用
TEST_F
宏来编写测试用例。
假设你有一个类 Calculator
,其中有多个方法需要测试:
1 | class Calculator { |
在这个例子中,CalculatorTest
是一个测试夹具类,它在 SetUp()
中创建 Calculator
对象,并在 TearDown()
中销毁它。每个测试用例都会初始化一个独立的Calculator
对象实例,这个夹具节省了代码。