从谷歌测试中清除标准输出错误

Clearing stdout errors from google test ones

本文关键字:标准输出 错误 清除 谷歌 测试      更新时间:2023-10-16

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

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

假设所有测试都使用夹具,并且所有输出都是基于<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 的公共基类,并基于它制作所有夹具。