事實證明,該功能在默認情況下不受NUnitLite支持。也就是說,使用自定義TextWriter簡單重定向到標準IO(請參閱下面的代碼)非常有用。非常感謝Charlie Pool提供的答案。
在你的Program.cs或App.xaml.cs使用以下命令:
//Override output in order to get mid-test output.
Console.SetOut(new TestListenerTextWriter(IoC.Resolve<ITestListener>(), TestOutputType.Out));
Console.SetError(new TestListenerTextWriter(IoC.Resolve<ITestListener>(), TestOutputType.Error));
Trace.Listeners.Add(new TextWriterTraceListener(new TestListenerTextWriter(IoC.Resolve<ITestListener>(), TestOutputType.Trace)));
然後定義TestListenerTextWriter如下。
public class TestListenerTextWriter : TextWriter
{
private readonly ITestListener _eventListener;
private readonly TestOutputType _type;
public TestListenerTextWriter(ITestListener eventListener, TestOutputType type)
{
_eventListener = eventListener;
_type = type;
}
override public void Write(char aChar)
{
_eventListener.TestOutput(new TestOutput(aChar.ToString(CultureInfo.InvariantCulture), _type));
}
override public void Write(string aString)
{
_eventListener.TestOutput(new TestOutput(aString, _type));
}
override public void WriteLine(string aString)
{
_eventListener.TestOutput(new TestOutput(aString + NewLine, _type));
}
override public Encoding Encoding
{
get { return Encoding.Default; }
}
}