首页 > 解决方案 > 如何访问谷歌测试夹具静态变量

问题描述

我想用谷歌测试来测试我的一门课。这个类的初始化需要大量的时间和资源,所以我想对我所有的测试用例只做一次,所以我尝试使用带有 SetUpTestSuite() 的夹具。在我的夹具中,我声明了一个变量:

static MyClassToBeTested my_class;

在我的测试用例中,我想访问该my_class变量。

在编译期间,我收到以下错误:

undefined reference to 'MyTest::my_class'

我试图简单地访问my_classMyTest::my_class

class MyTest : public ::testing::Test {
protected:
    static MyClassToBeTested my_class;
    static void SetUpTestSuite() {
        //doing some stuff here
    }
};
TEST_F(MyTest, first_test) {
    ASSERT_EQ(my_class.foo(), 5);
}

标签: c++testingstaticgoogletestfixtures

解决方案


你必须定义你的静态变量

class MyTest : public ::testing::Test {
protected:
    static MyClassToBeTested my_class;
    static void SetUpTestSuite() {
        //doing some stuff here
    }
};

MyClassToBeTested MyTest::my_class;

推荐阅读