有没有办法(除了stdout重定向)以避免在使用谷歌测试时将我的代码的错误和警告消息发送到stdout?
我想从gtest获取拆解和输出,而不是让我的stdout日志与我的程序手动生成的警告和异常一起被删除,我需要测试。
答案 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
取消所有输出,对cerr
和clog
可以采用相同的方式。
为了保持这个DRY,你可以编写一个继承自testing::Test
的公共基类,并根据它创建所有的灯具。