2008-10-06 4 views
5

Я пытаюсь использовать TestDriven.Net не только для проверки моего кода, но и для вызова функции в моем коде, целью которого является распечатать внутреннее состояние кода в окне отладки.Как я могу видеть заявления Debug.WriteLine при использовании 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 quickstart, который показывает примеры использования Debug.WriteLine в модульном тесте, но как ни странно это не работает для меня тоже - то есть только выход в моем окне «Test» является:

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


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

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

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

Благодарим за помощь!


Edit: Я использую VB.Net 2.0, TestDriven.NET 2.14.2190 и NUnit 2.4.8.0

ответ

10

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

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

+0

Спасибо за предложение, но я не получаю никакого вывода с помощью "теста с отладчиком вариантом либо. Странно, что их документация показывает «Debug.WriteLine» и «Run Tests» нажимается! http://www.testdriven.net/quickstart.aspx#Run%20Test(s) – Andrew 2008-10-06 09:22:24

+0

Просто попробовал Console.WriteLine(), и он появляется в окне тестирования. Я дам это сейчас, спасибо еще раз: o) – Andrew 2008-10-06 09:24:28

+0

Я согласен с ответом, так как смена инструкций Debug.WriteLine() сделала трюк. Console.WriteLine работал, хотя я решил использовать Trace.WriteLine вместо: o) – Andrew 2008-10-07 10:42:31

2

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() выше их не выполняется.

+0

Да, поэтому рекомендуется иметь один утвердитель на тест. – 2008-10-06 10:04:06

0

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

+1

Вот как я это делаю, но все еще не получаю от Debug.WriteLine() - я переключился на Trace.WriteLine, и он работает: o/ – Andrew 2008-10-06 10:31:30

0

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

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

1

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

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

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

1588: Опционально дисплей трассировки/отладки вывода при выполнении всех тестов в проекте/решения

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

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

2

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

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

С уважением, Jamie.

0

CTRL + ALT + I показывает окно проверки

Смежные вопросы