从谷歌测试中清除标准输出错误
Clearing stdout errors from google test ones
有什么方法(除了标准输出重定向)可以避免我的代码在使用谷歌测试时发送到标准输出的错误和警告消息?
我只想从 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
输出,可以以相同的方式对cerr
和clog
进行操作。
为了保持这个 DRY,你可以编写一个继承自 testing::Test
的公共基类,并基于它制作所有夹具。
相关文章:
- 输出错误,问题是找到总和5000位数字cpp
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用提升过程获取 shell 命令的标准输出
- 使用复制构造函数的程序输出错误
- 将标准输出重定向到ostream
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 异或字符串加密/解密输出错误
- 在程序执行期间从标准输出重定向到自定义流
- 在linux上使用g++输出错误,在windows上更正
- 标准输出C++意外行为
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- ECDSA 密钥对生成输出错误
- fscanf() 输出错误的值
- 防止 qDebug() 写入标准输出
- 添加带有自定义标准错误的 fprintf() 语句后,标准输出挂起
- 是否有一种方法可以查看哪个线程正在使用gdb打印标准输出或标准错误?
- 在c# GUI项目上重定向标准输出+标准错误
- 即使重定向了标准输出和标准错误,Unix程序如何在屏幕上显示输出?
- 从谷歌测试中清除标准输出错误
- 如何从分离的QProcess中读取标准输出/标准错误