问题 您可以在Google Test中测试SetUp的成功/失败吗?


有没有办法检查SetUp代码在GTest灯具中是否实际正常工作,以便整个灯具或测试应用程序可以标记为失败,而不是得到奇怪的测试结果和/或必须在每次测试中明确检查?


10014
2017-12-17 14:18


起源



答案:


如果你把你的灯具设置代码放入 SetUp 方法,它失败并发出致命的失败(ASSERT_XXX 要么 FAIL 宏),Google Test不会运行您的测试体。所以你要写的就是

class MyTestCase : public testing::Test {
 protected:
  bool InitMyTestData() { ... }

  virtual void SetUp() {
    ASSERT_TRUE(InitMyTestData());
  }
};

TEST_F(MyTestCase, Foo) { ... }

然后 MyTestCase.Foo 如果不会执行 InitMyTestData() 返回false。如果您的设置代码中已经有非致命断言(即, EXPECT_XXX 要么 ADD_FAILURE),你可以通过写作从他们那里产生一个致命的断言 ASSERT_FALSE(HasFailure()); 您可以在Google Test中找到有关故障检测的更多信息 高级指南 维基页面。


10
2017-12-21 08:32



这仍然显示我通过的所有测试。 - marsh


答案:


如果你把你的灯具设置代码放入 SetUp 方法,它失败并发出致命的失败(ASSERT_XXX 要么 FAIL 宏),Google Test不会运行您的测试体。所以你要写的就是

class MyTestCase : public testing::Test {
 protected:
  bool InitMyTestData() { ... }

  virtual void SetUp() {
    ASSERT_TRUE(InitMyTestData());
  }
};

TEST_F(MyTestCase, Foo) { ... }

然后 MyTestCase.Foo 如果不会执行 InitMyTestData() 返回false。如果您的设置代码中已经有非致命断言(即, EXPECT_XXX 要么 ADD_FAILURE),你可以通过写作从他们那里产生一个致命的断言 ASSERT_FALSE(HasFailure()); 您可以在Google Test中找到有关故障检测的更多信息 高级指南 维基页面。


10
2017-12-21 08:32



这仍然显示我通过的所有测试。 - marsh