Как просмотреть инструкции Debug.WriteLine при использовании TestDriven.Net?

StackOverflow https://stackoverflow.com/questions/173641

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

<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: " & _IsTrue)
    End Sub

End Class

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

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

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


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

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

Я искал варианты или предпочтения и не нашел ни одного!

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


Редактировать: Я использую VB.Net 2.0, TestDriven.Net 2.14.2190 и NUnit 2.4.8.0.

Это было полезно?

Решение

Я обнаружил, что хотя Debug.Writeline() не работает с модульными тестами, Console.WriteLine() работает.

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

Другие советы

Trace.WriteLine() кажется, это ответ :о)

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

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

Internal state of Class1: True

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

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

Вместо этого попробуйте использовать Trace.WriteLine(...).Вызов Debug.WriteLine(...) будет выполняться только тогда, когда определен DEBUG.По умолчанию новые проекты Visual Studio больше не определяют DEBUG, но определяют TRACE.

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

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

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

1587:Всегда показывать консоль сообщения вывода/ошибки и тестового бегуна

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top