c++ - GTest-如何通过SetUp方法为多次使用准备数据?

标签 c++ unit-testing googletest

我正在尝试运行一些Google测试,并且在每个测试装置中都有很多代码需要重复,因此我想使代码尽可能简短,我想使用的子类的SetUp方法Testing::test父类,但是TEST_F固定装置无法识别SetUp中的变量
这是我能想到的最简单的例子:

class FooTest: public testing::Test
      {
      protected:
        virtual void SetUp() // using void SetUp() override does not help
        {
          int FooVar = 911;
        }

        virtual void TearDown()
        {
        }
      };

TEST_F(FooTest, SampleTest)
{
  // FooTest::SetUp(); // This does not help as well
  EXPECT_EQ(911, FooVar);
}
当我尝试编译此代码时,它显示一个错误,即未在此范围内声明FooVar。我该如何解决?
非常感谢您的帮助。

最佳答案

FooVarSetUp方法内部的局部变量。如果要在测试装置中使用它,则需要成为类成员:

class FooTest: public testing::Test
{
      protected:

      int FooVar;
      virtual void SetUp() override
      {
        this.FooVar = 911;
      }
};
在此示例中,如果仅设置整数类型,应仅使它们成为const成员变量。

关于c++ - GTest-如何通过SetUp方法为多次使用准备数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64766285/

相关文章:

c++ - "does not name a type"尝试使用指向函数的指针时出错

c++ - 在循环中创建新线程是否安全?

c++ - 对 operator+ 和/或 operator+= 使用 move 语义有意义吗?

python - 使用模拟获取所有日志记录输出

c++ - 如何在 bazel/googletest 中使用环境变量

c++ - 使用 isalpha() C++ 的问题

javascript - AngularJS - 具有复杂内部逻辑的单元测试工厂

python - 类型错误 : issubclass() arg 1 must be a class in Django tests

unit-testing - GoogleTest中有没有类似于Igloo的LastException的东西?

c++ - 未定义对 `pthread_key_create' 的引用(链接器错误)