GoogleTest:如何跳过测试?

新手上路,请多包涵

使用 Google Test 1.6(Windows 7、Visual Studio C++)。如何关闭给定的测试? (也就是我怎样才能阻止测试运行)。除了注释掉整个测试,我还能做些什么吗?

原文由 User 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

Google Test 1.7 的 文档 建议

如果您有一个无法立即修复的损坏测试,您可以在其名称中添加 DISABLED_ 前缀。这会将其排除在执行之外。这比注释掉代码或使用 #if 0 更好,因为禁用的测试仍在编译(因此不会腐烂)。

上述文档中的示例:

 // Tests that Foo does Abc.
TEST(FooTest, DISABLED_DoesAbc) { ... }

class DISABLED_BarTest : public testing::Test { ... };

// Tests that Bar does Xyz.
TEST_F(DISABLED_BarTest, DoesXyz) { ... }

如果您可以访问更新版本的 Google Test(当前版本是 v1.12.1),请查看 jslmsca 在评论中建议的 GTEST_SKIP() 宏和 Peter Bloomfield 在另一个答案中建议的宏。从 advanced.md 中的示例:

 TEST(SkipTest, DoesSkip) {
  GTEST_SKIP() << "Skipping single test";
  EXPECT_EQ(0, 1);  // Won't fail; it won't be executed
}

class SkipFixture : public ::testing::Test {
 protected:
  void SetUp() override {
    GTEST_SKIP() << "Skipping all tests for this fixture";
  }
};

// Tests for SkipFixture won't be executed.
TEST_F(SkipFixture, SkipsOneTest) {
  EXPECT_EQ(5, 7);  // Won't fail
}

原文由 Bill 发布,翻译遵循 CC BY-SA 4.0 许可协议

您现在可以使用 GTEST_SKIP() 宏在运行时有条件地跳过测试。例如:

 TEST(Foo, Bar)
{
    if (blah)
        GTEST_SKIP();

    ...
}

请注意,这是一个非常 新的功能,因此您可能需要更新您的 GoogleTest 库才能使用它。

原文由 Peter Bloomfield 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题