#c_sharp #net #юнит_тесты #отладка #логирование
Для чего и как используется этот метод? [TestMethod] public void Q_GetAllCustomers_NoExc() { foreach(var i in context.GetAll()) { Trace.TraceInformation($"{i.FirstName} {i.LastName}") } } Куда попадёт string, который я передаю этому методу. И как это вообще связано с TDD?
Ответы
Ответ 1
Это встроенное средство отладки, трассировочное сообщение. У вас есть конфигурируемый через app.config (или вручную) список слушателей трассировочных сообщений. Им и доставляется полученная строка. Например, вы можете направить ваши трассировочные сообщения в файл или на консоль, положить в системный event log, отправить по сети или положить на web-страницу. В случае, если вы запускаете проект из-под Visual Studio, ваши трассировочные сообщения слушает IDE, и показывает их в окошке Debug. В случае, когда вы запускаетесь не из-под Visual Studio, трассировочные сообщения уходят системе (если вы не отконфигурировали по-другому). Вы можете их видеть при помощи, например, утилиты DebugView. С TDD не связано никак.Ответ 2
В дополнение к ответу @VladD добавлю, что в случае с запуском теста из-под Visual Studio, вся отладочная и трассировочная информация также доступна в тест аутпуте:Ответ 3
Куда попадёт string, который я передаю этому методу. Если компиляция проходила при включенном TRACE, то зависит от того какие TraceListener'ы подключены. Посмотреть можно так: using System.Linq; using System.Diagnostics; for(var i=0; i < Trace.Listeners.Count; i++) { Console.WriteLine(Trace.Listeners[i].GetType().Name); } при выполнении кода в C# interactive выводится DefaultTraceListener. Коллекцию Trace.Listeners можно менять, и например, если требуется выводить информацию в файл, после запуска приложения вызываем: Trace.Listeners.Add(new TextWriterTraceListener(@"c:\temp\trace.txt")); Дальше, где-бы ни находился вызов Trace.TraceInformation("test"); в файл выводит test вместе с именем процесса. Формат вывода можно настроить и выводить время, идентификатор потока и т.д.
Комментариев нет:
Отправить комментарий