Перенаправление Console.Out в тестовой настройке и разрыве
Это продолжение отЗахватывает вывод, отправленный на консоль. Выход из модульного теста? иссылочная статья в принятом ответе Марка Симанна.
Я хотел бы использовать Console.Out и Console.In для перенаправления потоков во время тестирования. Каждый тест в классе должен использовать перенаправления.
Чтобы поддерживать чистоту тестов, я хотел бы сделать это в тестах SetUp и TearDown.
Вот о чем я думал:
private StringWriter _sw;
private StringReader _sr;
[SetUp]
public void SetUp()
{
_sw = new StringWriter();
Console.SetOut(_sw);
_sr = new StringReader("100");
Console.SetIn(_sr);
}
[TearDown]
public void TearDown()
{
var standardOut = new StreamWriter(Console.OpenStandardOutput());
standardOut.AutoFlush = true;
Console.SetOut(standardOut);
Console.SetIn(new StreamReader(Console.OpenStandardInput()));
}
Затем я использовал бы _sw.ToString () в тестах, чтобы проверить, что было записано в поток.
Существуют ли какие-либо серьезные недостатки использования методов настройки или разрыва для этого? Будет ли это похоже на перенаправление сusing
заявление? Например.
using (StringWriter sw = new StringWriter())
{
...
}