有什么方法(除了标准输出重定向)可以避免在使用谷歌测试时将我的代码错误和警告消息发送到标准输出?
我只想从 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
的所有输出在测试运行期间,可以以相同的方式完成 cerr
和clog
.
为了保持这种DRY,您可以编写一个继承自testing::Test
的公共(public)基类。 ,并以此为基础制作所有的装置。
关于c++ - 清除谷歌测试错误中的标准输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22808104/