在 gtest 中显示失败的函数而不是宏

Show failed function instead of macro in gtest

目前我正在使用 gtest 创建新测试。在某些情况下,我使用相同的 EXPECT_EQs 组,因此我将它们包装在一个函数中。现在,当特定测试失败时,它会打印出写入失败的 EXPECT 的行,而不是调用包装函数的行。

class TestSuite : public ::testing::Test
{
public:
    void wrapperForExpects(const std::string& str)
    {
        EXPECT_EQ(0, 0);
        EXPECT_EQ("zero", str);
    }
};

TEST_F(TestSuite, exampleName)
{
    std::string exampleVariable = "one";
    wrapperForExpects(exampleVariable);
}

在此示例中,第 7 行将打印为控制台失败,但我想查看第 14 行。我该怎么做?

这是通过在函数调用前添加 SCOPED_TRACE("exampleName") 来完成的。这将在输出中创建类似于堆栈跟踪的内容:

TEST_F(TestSuite, exampleName)
{
    SCOPED_TRACE("exampleName_scope");  // <------ Add this
    std::string exampleVariable = "one";
    wrapperForExpects(exampleVariable);
}

实例:https://godbolt.org/z/nnzvjGc8P

有关更多示例,请参阅 here