【发布时间】:2011-08-28 14:57:50
【问题描述】:
我有一个 C++ 代码,它有很多接收 ostream 作为参数的函数。我想对这些函数进行单元测试,因为我必须在执行到函数后验证 ostream 对象数据。我可以将输出流重定向到文件,但我想检查是否可以创建临时缓冲区并将输出流重定向到缓冲区并从该缓冲区读取。
【问题讨论】:
标签: c++ unit-testing window iostream
我有一个 C++ 代码,它有很多接收 ostream 作为参数的函数。我想对这些函数进行单元测试,因为我必须在执行到函数后验证 ostream 对象数据。我可以将输出流重定向到文件,但我想检查是否可以创建临时缓冲区并将输出流重定向到缓冲区并从该缓冲区读取。
【问题讨论】:
标签: c++ unit-testing window iostream
您可以将std::stringstream 用作内存中的std::ostream:
#include <iosfwd>
#include <sstream>
#include <cassert>
void my_func(std::ostream& out) {
out << "test";
}
int main() {
std::ostringstream buf;
my_func(buf);
assert(buf.str() == "test");
}
【讨论】:
buf,你可以用buf.str(""); buf.clear()重置它