Трассировка в тестировании Visual Studio (миграция из NUnit)

В NUnit я привык писать операторы трассировки в тесте и отображать их на вкладке трассировки графического интерфейса NUnit.

В новом проекте я перехожу на встроенное модульное тестирование в Visual Studio Professional Addition, которое, как мне кажется, является интерфейсом для mstest.exe.

Тестовый код:

<TestMethod()>
Public Sub TestPagesInheritFromBasePage()
    Dim webUI As Assembly = Assembly.GetAssembly(GetType(WebUI.BasePage))
    Dim badPages As New List(Of String)
    For Each t As Type In webUI.GetTypes()
        Debug.Write(t.Name + ", ")
        Trace.Write(t.Name + ", ")
        If t.BaseType Is GetType(System.Web.UI.Page) Then badPages.Add(t.Name)
    Next
    Debug.Flush()
    Trace.Flush()
    If badPages.Count > 0 Then
        Assert.Fail("{0}: do not inheriting from BasePage", String.Join(", ", badPages.ToArray()))
    End If
End Sub

У меня возникает ошибка, поэтому я знаю, что строки Debug.Write и Trace.Write выполняются.

Я прочитал документы MSDN по написанию этих тестов и могу просмотреть вывод трассировки при выполнении в командной строке через:

mstest.exe /testcontainer:mydll.dll /detail:debugtrace

Однако я не могу найти вывод трассировки при выполнении тестов непосредственно в Visual Studio. Есть ли другой предпочтительный метод вывода информации во время модульного теста, или мне не хватает возможности просмотреть информацию о трассировке в Visual Studio?

Ответ: Оба приведенных ниже ответа (Console.Write и Debug.Write) сработали, результаты были в деталях результатов теста (панель TestResult внизу, щелкните правой кнопкой мыши результаты теста и перейдите к TestResultDetails) . Кроме того, я установил константы Debug и Trace в свойствах проекта.


person Tim Hoolihan    schedule 05.08.2009    source источник


Ответы (4)


Обычно я использую этот метод для печати чего-либо в окне вывода Visual Studio:

System.Diagnostics.Debug.WriteLine("Message");
person Michael Alves    schedule 05.08.2009
comment
он все еще не отображается в выводе. Я пробовал как запускать тест, так и отлаживать тест. Я вызываю Debug.Flush(), и окно вывода настроено для отображения вывода отладки. Есть идеи, что мне здесь не хватает? - person Tim Hoolihan; 05.08.2009

Попробуйте вместо этого использовать Console.WriteLine(). Я использую это в своих модульных тестах, и он отлично работает — он отображает текст в окне вывода результатов модульного теста.

person Jason Evans    schedule 05.08.2009
comment
Кажется, это работает не лучше, чем Trace.WriteLine() - person ebyrob; 14.04.2020

Чтобы увидеть результаты, дважды щелкните тест в окне «Результаты теста» (доступ из пункта главного меню «Тесты» >> меню окна >> Результаты теста)

person bnieland    schedule 29.07.2010

Все предыдущие ответы на самом деле верны, но требуют более или менее щелчка мышью.

Если вы хотите увидеть результат немедленно, без дополнительного клика, просто добавьте столбцы Отладка трассировки и/или Вывод (StdOut) (будь то вы используете Debug.Write или Console.Write) на панель Результаты теста, щелкнув результат теста правой кнопкой мыши и выбрав «Добавить/удалить столбцы».

person rmoestl    schedule 20.06.2012