c++ - 清除谷歌测试错误中的标准输出错误

标签 c++ unit-testing stdout googletest

有什么方法(除了标准输出重定向)可以避免在使用谷歌测试时将我的代码错误和警告消息发送到标准输出?

我只想从 gtest 获取拆卸和输出,而不是让我的标准输出日志与我需要测试的程序手动生成的警告和异常一起被丢弃。

最佳答案

假设您的所有测试都使用固定装置,并且您的所有输出都是 <iostream>基于,您可以执行以下操作:

using namespace std;

class SomeTest : public testing::Test {
protected:
    virtual void setUp() {
        storedStreambuf_ = cout.rdbuf(); 
        cout.rdbuf(nullptr);
    }

    virtual void tearDown() {
        cout.rdbuf(storedStreambuf_);
    }
private:
    streambuf* storedStreambuf_; 
};

这将抑制通过 cout 的所有输出在测试运行期间,可以以相同的方式完成 cerrclog .

为了保持这种DRY,您可以编写一个继承自testing::Test的公共(public)基类。 ,并以此为基础制作所有的装置。

关于c++ - 清除谷歌测试错误中的标准输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22808104/

相关文章:

google-app-engine - 如何可视化 Go GAE 应用程序的代码覆盖率信息?

c# - 使用 stub 和模拟的正确方法是什么?

c++ - 为什么我解决N个皇后区问题的回溯解决方案不起作用?

c++ - Clang 找不到转换运算符

c++ - 如何在 C++ 中克隆为派生对象

c# - 使用具有预加载功能的内存数据库对 EF Core 进行单元测试

c++ - 有没有办法打印一个对象分配的堆内存量?

go - 使用 Stdout 和 Stderr 的线程安全操作(exec.Cmd)

c++ - 将标准输出重定向到 ostream

c++ - 写入文件和stdout,std::cout未显示全部