Как увидеть операторы Debug.WriteLine при использовании TestDriven.Net? - PullRequest
5 голосов
/ 06 октября 2008

Я пытаюсь использовать 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().

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

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


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

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

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

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

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

Ответы [ 7 ]

11 голосов
/ 06 октября 2008

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

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

3 голосов
/ 06 октября 2008

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() над ними не удается.

2 голосов
/ 03 декабря 2009

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

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

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

1 голос
/ 10 октября 2008

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

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

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

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

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

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

0 голосов
/ 29 апреля 2013

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

0 голосов
/ 06 октября 2008

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

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

0 голосов
/ 06 октября 2008

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

...