gtest是一个用于C++的单元测试框架,它提供了一系列的宏和断言来编写和运行测试用例。
gtest的宏主要有以下几种:
- TEST(test_case_name, test_name):这是一个宏,用来定义一个简单的测试用例,它有两个参数,第一个是测试用例的名称(test_case_name),第二个是测试用例的子集(test_name)。在这个宏内部,可以使用任何C++代码和gtest提供的断言来进行检查。
- TEST_F(test_fixture, test_name):这是一个宏,用来定义一个复杂的测试用例,它也有两个参数,第一个是测试固件(test_fixture),第二个是测试用例的子集(test_name)。测试固件是一个用户自定义的类,它必须继承自 ::testing::Test 类,并且可以在其中定义一些共享的数据和方法。在这个宏内部,可以使用 SetUp() 和 TearDown() 方法来初始化和清理资源,并使用gtest提供的断言来进行检查。
- TEST_P(test_case_name, test_name):这是一个宏,用来定义一个参数化的测试用例,它也有两个参数,第一个是测试用例的名称(test_case_name),第二个是测试用例的子集(test_name)。参数化的测试用例可以使用不同的参数来运行同一段代码,并检查不同的结果。为了使用这个宏,需要先定义一个继承自 ::testing::TestWithParam<T> 类的类,其中T是参数的类型,并且需要在其中实现 GetParam() 方法来获取当前的参数值。然后需要使用INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator)宏来实例化不同的参数值,其中 prefix 是前缀名,test_case_name 是测试用例的名称,generator 是一个产生参数值的对象或表达式。在这个宏内部,可以使用gtest提供的断言来进行检查。