首页 > 解决方案 > GTest 参数函数编译失败:在哪里修复?

问题描述

我的代码:

#include <gtest/gtest.h>
bool IsEven(int i){return i%2==0;}
class IsEvenParamTest:public testing::TestWithParam<int>{};
INITIALIZE_TEST_CASE_P(MySuccess,IsEvenParamTest,testing::Range(2,6));
TEST_P(IsEvenParamTest, All){
    int n = GetParam();
    EXPECT_TRUE(IsEven(n));
}

g++ 编译失败:

mytest.cpp:4:23: error: expected constructor, destructor, or type conversion before ‘(’ token
INITIALIZE_TEST_CASE_P(MySuccess,IsEvenParamTest,testing::Range(2,6));
                   ^

如何解决?

标签: c++parameterscompilationgoogletest

解决方案


我找到了一个可能的解决方案:正如Googletest 的错误跟踪器中所解释的那样 ,宏的名称在 1.8.0 之后已更改:

INSTANTIATE_TEST_SUITE_P适用于大师,INSTANTIATE_TEST_CASE_P适用于 1.8.0

因此,如果您正在关注旧文档但使用较新版本的 GTest(或相反,像我一样),您应该使用另一个宏。


推荐阅读