这是我试过的,但错误==“”
var streamReader = new StreamReader(Console.OpenStandardError());
Console.Error.WriteLine("An error has occurred");
Console.Error.Flush();
string error = streamReader.ReadToEnd();
目的是我需要为写入标准错误的类编写测试。我想检查写入的错误是否正确,但理想情况下我不想修改类本身。
答案 0 :(得分:0)
我发现的一种方式。将Console.Error设置为扩展的TextWriter,用于拦截正在写入的文本。我只是覆盖了WriteLine(字符串),因为这就是我所需要的。
TextWriter oldWriter = Console.Error;
ErrorCapturer errorCapturer = new ErrorCapturer();
Console.SetError(errorCapturer);
Console.Error.WriteLine("An error has occured");
string error = errorCapturer.ReadToEnd();
Console.SetError(oldWriter);
class ErrorCapturer : TextWriter
{
string _buffer="";
public override void WriteLine(string line)
{
_buffer += line + Environment.NewLine;
base.WriteLine(line);
}
public string ReadToEnd()
{
string ret = _buffer;
_buffer = "";
return ret;
}
public override Encoding Encoding
{
get { return Encoding.ASCII; }
}
}