Контекст:
некоторые пользователи сообщают о проблемах с функцией загрузки файлов в нашем веб-приложении. Это случается только изредка и без особой закономерности. Мы пытались понять это в течение долгого времени, добавляя отладочную информацию везде, где мы можем подумать, что это может помочь, просматривая журналы и т. Д., Но мы не смогли воспроизвести или выяснить это.
Проблема:
сейчас я пытаюсь воспроизвести это, используя MSTest и WatiN, чтобы повторить операцию, которая должна завершиться ошибкой большое количество раз (несколько сотен). Чтобы иметь представление о том, насколько далеко зашел тест в цикле, я хочу напечатать что-то вроде:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Однако это не отображается в окне вывода. Теперь я знаю, что вы получите вывод консоли в результатах теста (а также то, что вы выводите и Debug.Writeline
т. Д.), Но это будет доступно только после завершения теста. И поскольку мой тест с сотнями повторений может занять некоторое время, я хотел бы знать, как далеко он зашел.
Вопрос:
Есть ли способ получить вывод консоли в окне вывода во время выполнения теста?
Ответы:
Вывод консоли не отображается, потому что код серверной части не запущен в контексте теста.
Вам, вероятно, лучше использовать
Trace.WriteLine
(В System.Diagnostics), а затем добавить прослушиватель трассировки, который записывает в файл.В этой теме MSDN показано, как это сделать.
Согласно комментариям Марти Нила и Дэйва Андерсона:
источник
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
иConsole.WriteLine()
вывод в представление результатов тестирования , а не в представление вывода . (И заметьте , что в результаты испытаний View , может быть необходимо добавить выход (Stdout) столбец , щелкнув правой кнопкой мыши и выбрав Add / Remove Columns ... ) . Но, возможно , я еще не видел выход в выходной Вид означает, что я что-тоTrace.Listeners.Add(new ConsoleTraceListener());
достаточно, а затем Показать вывод отладки в окне вывода.Используйте расширение
Debug.WriteLine
. ЭтоOutput
немедленно отобразит ваше сообщение в окне. Единственное ограничение - вы должны запускать тест вDebug
режиме.Вывод
источник
using System.Diagnostics;
Я нашел собственное решение. Я знаю, что ответ Андраса, вероятно, наиболее соответствует MSTEST, но мне не хотелось проводить рефакторинг своего кода.
Одноразовое изделие
ConsoleRedirector
определяется как:источник
У меня была такая же проблема, и я «запускал» тесты. Если я вместо этого "отлаживаю" тесты, вывод отладки будет отображаться так же хорошо, как и все остальные трассировки и консоль. Я не знаю, однако, как увидеть результат, если вы «Запустите» тесты.
источник
System.Diagnostics.Debug.WriteLine
при отладке тестов, но как вы приступитеConsole.WriteLine
к работе? Для меня это не заканчивается нормальным (обновленным в реальном времени) выводом.Лучше настроить один тест и создать тест производительности из этого теста. Таким образом, вы можете отслеживать прогресс, используя набор инструментов по умолчанию.
источник