Перенаправление 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())
{
    ...
}

Ответы на вопрос(1)

Ваш ответ на вопрос