Если вы действительно хотите протестировать вызовы Concole.WriteLine
, я бы создал класс с интерфейсом для инкапсуляции Console.WriteLine
.Может выглядеть так.
public class ConsoleService : IConsoleService
{
public void WriteToConsole(string text)
{
Console.WriteLine(text);
}
}
Тогда вы можете использовать эту службу в своем методе PrintData, а также проверять вызовы в своем тесте и проверять вызовы;например, с Moq.
Проще было бы вернуть список из PrintData и добавить каждую запись в список вместо Console.WriteLine(input[i]);
, потому что тогда вы можете проверить, были ли добавлены правильные значения.А в вашем приложении вы можете просто напечатать все записи с каждым циклом.
Таким образом, вы должны изменить свой код, чтобы сделать его тестируемым.Но после этого ваш код станет чище (вряд ли я бы рекомендовал не использовать взаимодействие с пользовательским интерфейсом в логических классах).Хороший пример того, как тесты тоже могут сделать код чище;)