Как я вижу отладку.Инструкции WriteLine при использовании TestDriven.Net?

#.net #debugging #testdriven.net

Вопрос:

Я пытаюсь использовать TestDriven.Сеть не только для тестирования моего кода, но и для вызова функции в моем коде, целью которой является вывод внутреннего состояния кода в окно отладки.

Вот очень упрощенный пример того, что я пытаюсь сделать..

 <TestFixture()> _
Public Class UnitTest

    <Test()> _
    Public Sub TestDebug()
        Dim oClass1 As New Class1

        Assert.AreEqual(True, oClass1.IsTrue)

        Debug.WriteLine("About to call .PrintDebug()")
        oClass1.PrintToDebug()

    End Sub

End Class

Public Class Class1

    Private _IsTrue As Boolean = True

    Public ReadOnly Property IsTrue() As Boolean
        Get
            Return _IsTrue
        End Get
    End Property

    Public Sub PrintToDebug()
        Debug.WriteLine("Internal state of Class1: " amp; _IsTrue)
    End Sub

End Class
 

Я пытаюсь протестировать общедоступный интерфейс Class1 и каким-то образом просмотреть выходные данные Class1.PrintToDebug() функции.

Я просмотрел тестовый привод.Net quickstart, в котором показаны примеры использования Debug.WriteLine в модульном тесте, но, как ни странно, это тоже не работает для меня — т. Е. Единственный вывод в моем окне «Тест»:

 ------ Test started: Assembly: ClassLibrary1.dll ------


1 passed, 0 failed, 0 skipped, took 1.19 seconds.
 

Я попытался заглянуть в другие окна (Отладка и сборка), в окне отладки включены параметры «Вывод программы» и «Сообщения об исключениях».

Я искал варианты или предпочтения и не могу их найти!

Спасибо за вашу помощь!


Изменить: Я использую VB.Net 2.0, тестовый привод.Net 2.14.2190 и NUnit 2.4.8.0

Ответ №1:

Я обнаружил это во время отладки.Writeline() не работает с модульными тестами, Консоль.WriteLine() делает это.

Причина в том, что при запуске тестов процесс отладчика не вызывается, а отлаживается.Функция WriteLine() игнорируется. Однако, если вы используете «Тест с отладчиком», я думаю (не пробовал) отладку.WriteLine() будет работать.

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

1. Спасибо за предложение, но я также не получаю никаких результатов, используя опцию «Тест с отладчиком». Странно, что в их документации указано » Отладка. WriteLine» и «Запуск тестов» при нажатии! testdriven.net/quickstart.aspx#Run Test(ы)

2. Просто попробовал консоль. WriteLine (), и он отображается в окне теста. Я попробую сейчас, еще раз спасибо :о)

3. Я приму ваш ответ как изменение отладки. Заявления WriteLine() сделали свое дело. Приставка. WriteLine работал, хотя я решил использовать Trace. Вместо этого напишите :o)

Ответ №2:

Trace.WriteLine() похоже, это ответ :o)

Вот выходные данные для примера из моего вопроса, используя Trace вместо Debug :

 ------ Test started: Assembly: ClassLibrary1.dll ------

Internal state of Class1: True

1 passed, 0 failed, 0 skipped, took 0.61 seconds.
 

Однако я обнаружил одну вещь.. выполнение приостанавливается при первом неудачном утверждении модульного теста, что означает, что Trace инструкции не выполняются, если Assert() вышеперечисленные инструкции не выполняются.

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

1. Да, именно поэтому рекомендуется иметь одно утверждение для каждого теста.

Ответ №3:

Попробуйте использовать трассировку.Вместо этого напишите (…). Вызов для отладки.Строка записи(…) будет выполнена только после определения ОТЛАДКИ. По умолчанию новые проекты Visual Studio больше не определяют ОТЛАДКУ, но они определяют ТРАССИРОВКУ.

Я действительно должен изменить пример быстрого запуска, чтобы вместо него использовать трассировку.

С уважением, Джейми.

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

1. -1 также не работает с трассировкой (но настраивается с помощью опций)

2. и он распечатывается сразу после завершения теста!

Ответ №4:

Возможно, вам захочется узнать, что 2.16 (текущая бета-версия) включает в себя:

1587: Всегда отображать вывод консоли/сообщения об ошибках и выполняемых тестах

Сообщения, сгенерированные запускающим тестом, и вывод консоли теперь будут отображаться при выполнении всех тестов в проекте/решении.

1588: Необязательно отображать результаты трассировки/отладки при выполнении всех тестов в проекте/решении.

По умолчанию вывод трассировки/отладки не отображается при выполнении всех тестов в проекте/решении. Это поведение может быть изменено с помощью TesDriven.Панель параметров сети.

Так что, похоже, это будет работать в следующей версии.

Ответ №5:

IIRC, эти выходные данные отображаются только в окне вывода при выполнении отдельного теста. Попробуйте щелкнуть правой кнопкой мыши в методе тестирования, чтобы запустить только этот тест…?

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

1. Вот как я это делаю, но по-прежнему никаких результатов отладки. WriteLine() — я переключился на трассировку. Пишите, и это работает :o/

Ответ №6:

«Запуск тестов…» включает в себя любые настройки, которые у вас в настоящее время есть для создания вашего решения/проекта.

Вы должны убедиться, что текущие параметры сборки для вашего решения/проекта имеют значение «Отладка», а не «Выпуск» (в противном случае Отладка.Вызовы Write*() условно удаляются компилятором).

Ответ №7:

CTRL ALT I показывает вам ближайшее окно