我在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;
}
关于c# - NUnit不捕获std::cerr的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2513312/