【问题标题】:GTest - how to prepare data for multiple usage via SetUp method?GTest - 如何通过 SetUp 方法准备数据以供多次使用?
【发布时间】:2021-02-22 05:41:01
【问题描述】:

我正在尝试运行一些 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 未在此范围内声明的错误。我该如何解决? 非常感谢您的帮助。

【问题讨论】:

  • 您需要将FooVar 声明为该类的成员。目前是SetUp方法内部的局部变量。
  • 您在int FooVar = 911; 中声明FooVar。编译器怎么可能显示该错误?
  • @M.A 谢谢,我没有意识到这一点。您能否添加一个答案以便我接受?

标签: c++ unit-testing googletest


【解决方案1】:

FooVarSetUp 方法内的局部变量。如果你想在测试夹具中使用它,它需要是一个类成员:

class FooTest: public testing::Test
{
      protected:

      int FooVar;
      virtual void SetUp() override
      {
        this.FooVar = 911;
      }
};

在这个例子中,如果你只是设置整数类型,应该只是让它们成为 const 成员变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2017-09-09
    • 2015-06-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多