【问题标题】:Can you test SetUp success/failure in Google Test?您可以在 Google 测试中测试设置成功/失败吗?
【发布时间】:2021-07-28 23:54:09
【问题描述】:

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

【问题讨论】:

    标签: googletest


    【解决方案1】:

    如果您将夹具设置代码放入 SetUp 方法中,但它失败并发出致命错误(ASSERT_XXX 或 FAIL 宏),Google Test 将不会运行您的测试主体。所以你只需要写

    class MyTestCase : public testing::Test {
     protected:
      bool InitMyTestData() { ... }
    
      virtual void SetUp() {
        ASSERT_TRUE(InitMyTestData());
      }
    };
    
    TEST_F(MyTestCase, Foo) { ... }
    

    如果 InitMyTestData() 返回 false,则 MyTestCase.Foo 将不会执行。如果您的设置代码中已经有非致命断言(即EXPECT_XXX 或ADD_FAILURE),您可以通过编写ASSERT_FALSE(HasFailure()); 从它们生成致命断言。您可以在Google 测试Advanced Guide 中找到有关故障检测的更多信息维基页面。

    【讨论】:

    • 这在使用静态 SetUpTestCase()(后来重命名为 SetUpTestSuite)时似乎不起作用。至少在我的情况下,即使 SetUpTestCase() 中的断言 (ASSERT_EQ) 失败,测试用例中的所有测试仍会执行。
    • 对于静态 SetUpTestCase(上面提到的情况),解决方法是在测试类中创建一个静态布尔变量 - 例如static bool s_has_assert_failure - 在 SetUpTestCase 中执行 s_has_assert_failure = HasFatalFailure()。然后在 SetUp 中执行 ASSERT_FALSE(s_has_assert_failure)。
    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2019-08-26
    • 1970-01-01
    • 2016-03-05
    • 2012-11-04
    相关资源
    最近更新 更多