我在C#中有一个nunit Test,它调用C DLL中函数的C#包装器.
C代码使用std :: cerr输出各种消息.
无法使用nunit-console / out / err或/ xml开关重定向这些消息.
在nunit(GUI版本)中,输出不会出现在任何地方.
我希望能够在nunit(GUI版本)中看到此输出.
理想情况下,我希望能够在测试中访问此输出.
谢谢你的帮助.
最佳答案 重定向std :: cerr是用您自己的流缓冲区替换流缓冲区的问题.
在退出之前恢复原始缓冲区很重要.我不知道你的包装器是什么样的,但是你可以弄清楚如何让它读取output.str().
#include <iostream>
#include <sstream>
#include <cassert>
using namespace std;
int main()
{
streambuf* buf(cerr.rdbuf());
stringstream output;
cerr.rdbuf(output.rdbuf());
cerr << "Hello, world!" << endl;
assert(output.str() == "Hello, world!\n");
cerr.rdbuf(buf);
return 0;
}