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

时间:2014-04-02 10:09:28

标签: c++ unit-testing stdout googletest

有没有办法(除了stdout重定向)以避免在使用谷歌测试时将我的代码的错误和警告消息发送到stdout?

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

1 个答案:

答案 0 :(得分:3)

假设您的所有测试都使用了灯具,并且所有输出都基于<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的公共基类,并根据它创建所有的灯具。