假设我有一个简单的HelloWorld
类,其中hi()
方法具有以下单行代码:
void HelloWorld::hi(){
printf("Hi!\n");
}
现在假设我想用CppUnit测试该方法。
void HelloWorldTests::testHi() {
HelloWorld hw;
hw.hi(); // <------ ????
// <------ ?????
CPPUNIT_ASSERT(/*????*/);
}
我如何捕获hi()
方法的输出,以便将其与CppUnit中的固定值进行比较?
答案 0 :(得分:1)
没有标准方法可以将程序中的输出捕获到stdout
。您可以使用stdout
将输出重定向到freopen(filename, "w", stdout)
到文件,然后比较文件的内容。这种方法的主要问题是没有标准方法来恢复原始目的地。
我建议您更改代码以使用std::cout
,因为可以使用{{1}轻松将其重定向到合适的std::streambuf
,例如std::stringbuf
会员写入rdbuf()
的方法完成后,可以保留并恢复原始流缓冲区:
std::cout