在 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。
目前我正在使用 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。