Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Метод Trace.TraceInformation(string)?

#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 вместе с именем процесса. Формат вывода можно настроить и выводить время, идентификатор потока и т.д.

Комментариев нет:

Отправить комментарий