我正在进行 spdlog 的最新提交(关于 std 输出的问题,显然已解决),并且正在将我的输出从 std::cout 切换到 spdlog。
我的谷歌测试重定向 std::cout 所以我可以检查存根函数的输出:
class MyTest : public testing::Test
{
protected:
void SetUp() override
{
sbuf = std::cout.rdbuf();
std::cout.rdbuf(buffer.rdbuf());
auto console = spdlog::stdout_color_mt("console");
auto err_logger = spdlog::stderr_color_mt("stderr");
}
void TearDown() override
{
std::cout.rdbuf(sbuf);
}
std::stringstream buffer;
std::streambuf* sbuf;
}
然后在测试中使用如下;
doSomethingThatWritesToStdOut();
std::string teststr = buffer.str();
EXPECT_TRUE(teststr.find("Some output string") != std::string::npos);
doSomethingThatWritesToStdOut
当我将内容更改为时,这不起作用
spdlog::get("console")->debug("Some output string\n");
该teststr
值为空..如果我执行以下操作
spdlog::get("console")->debug("Some output string\n");
std::cout << "Some output string\n";
然后我可以在 teststr 中看到“一些输出字符串”的一个实例。如何捕获此记录器的输出(或更改记录器),以便在谷歌测试中进行测试?