googletest 示例


googletest测试用例

class TestExample : public testing::Test {
public:
    // 所有用例执行前 执行该函数
    static void SetUpTestCase() {}
    // 所有用例执行结束后,执行该函数
    static void TearDownTestCase() {}

    // 每个用例执行前,均会执行该函数
    // 不用virtual void Setup()是因为如果父类不存在,则会重定义一个,但override()是继承父类。
    virtual void SetUp() override {}

    // 每个用例执行后, 均会执行该函数
    virtual void TearDown() override {}
};

// TEST
// 测试函数
// 测试简单的类
TEST(TestExample1, test_0) {}

// TEST_F:第一个参数是个大类,第二个参数是具体的用例。
// 需要设计一个测试类(成员、SetUp、TearDown)
// 测试较为复杂的函数、类
TEST_F(TestExample, test_f_t0) {}

class ParamTestEx : public testing::TestWithParam<int> {};

// TEST_P:
// 带参数的测试
TEST_P(ParamTestEx, test_p_t0)
{
    int value = GetParam();
    cout << "value=" << value << endl;
}
// INSTANTIATE_TEST_SUITE_P 实例化
// 第一个参数是测试用例的前缀,可以任意取。
// 第二个参数是测试用例的名称,需要和之前定义的参数化的类的名称相同,如:ParamTestEx
// 第三个参数是可以理解为参数生成器,上面的例子使用test::Values表示使用括号内的参数。Google提供了一系列的参数生成的函数:
INSTANTIATE_TEST_SUITE_P(test_p, ParamTestEx, testing::Values(5, 9, 10, 12));