Лично я не хочу встраивать трассировку в модульные тесты (используя любой из упомянутых вами методов).Если это требуется для модульного теста, это, скорее всего, признак того, что ваш модульный тест слишком сложен.Если вам необходимо отслеживать логику с помощью модульного теста, вы должны использовать утверждения на протяжении всего теста, чтобы программно проверить, происходит ли ожидаемое поведение, устраняя необходимость в выводе текстовой трассировки.
Однако вы должны быть прагматичными.- это полезно делать иногда.Использование любого метода (или другого типа, например Debug.WriteLine
) хорошо, но тот, который вы используете, дает некоторую гибкость.
Если у вас есть много тестов, которые выводят трассировку, вы можете получить много трассировкивывод, когда вы запускаете все свои тесты за один раз.В NUnit вы можете отфильтровать это на странице параметров:
Четыре опции делают следующее ref :
- Стандартный вывод : захватывает весь вывод, записанный в Console.Error.
- Вывод ошибки : захватывает весь вывод, записанный в Console.Error.
- Вывод трассировки : захватывает весь вывод, записанный в трассировку или отладку.
- Вывод журнала : захват выводов, записанных в журнал log4net.NUnit захватывает все выходные данные с уровнем Error или выше, если для параметра
DefaultLogThreshold
в файле конфигурации для тестовой сборки или проекта не указан другой уровень.
Отключив эти параметры, вы можете по отдельностиотключите вывод трассировки, отправляемой четырем различным методам ведения журнала, что позволит вам отфильтровать трассировку теста.
Мне не известно о каких-либо аналогичных настройках в тестовом средстве ReSharper.
OneТакже стоит учесть, что вывод текста может иметь побочные эффекты.Недавно я столкнулся со сбоем NUnit, потому что некоторые выходные данные содержали недопустимые символы в XML-файле - NUnit создает их как часть нашего автоматического построения.
EDIT :
@ Бронумски: Единственное реальное различие, которое я вижу в использовании одного метода над другим, - это способ потребления результата.
Некоторые инструменты будут получать трассировку Debug
(например, DebugView), но не выводят Console
.Кроме того, вы можете отключить вывод Trace
во время выполнения через конфигурацию (в app.config), но не вывод Console
.Это будет иметь значение только в том случае, если вам придется украшать реальный (т. Е. Не тестовый) код трассировкой для ваших тестов - регистрация лотов текста во время выполнения может быть дорогостоящей и поэтому выгодна, если ее можно отключить, если толькоон вам действительно нужен для диагностики чего-либо.
Кроме того, при использовании NUnit вы можете выборочно отключать их независимо друг от друга, если у вас слишком много журналов, чтобы пройти через них.