Любой вызов в моих модульных тестах к любому Debug.Write(line)
или Console.Write(Line)
просто пропускается во время отладки, и вывод никогда не печатается. Вызов этих функций из классов, которые я использую, работают нормально.
Я понимаю, что модульное тестирование предназначено для автоматизации, но я все же хотел бы иметь возможность выводить сообщения из модульного теста.
Я также пытался заставить Debug, Trace, Console или TestContext работать в модульном тестировании.
Ни один из этих методов не будет работать или отображать вывод в окне вывода:
Visual Studio 2012 и выше
(из комментариев) В Visual Studio 2012 значка нет. Вместо этого в результатах теста есть ссылка под названием « Вывод» . Если вы нажмете на ссылку, вы увидите все файлы
WriteLine
.До Visual Studio 2012
Затем я заметил в окне результатов теста , после запуска теста, рядом с небольшим зеленым кружком успеха , есть еще один значок. Я дважды щелкнул по нему. Это были мои результаты теста, и он включал все типы писем, перечисленных выше.
источник
В Visual Studio 2017 вы можете увидеть результат работы обозревателя тестов.
1) В вашем тестовом методе Console.WriteLine ("что-то");
2) Запустите тест.
3) В окне обозревателя тестов щелкните Метод пройденного теста.
4) И щелкните ссылку «Вывод».
И нажмите «Вывод», вы увидите результат Console.Writeline ().
источник
Console.WriteLine
не отображаются на панели «Вывод» в разделе «Тесты».Это зависит от вашего тестового исполнителя ... например, я использую xUnit , поэтому, если вы используете это, следуйте этим инструкциям:
https://xunit.github.io/docs/capturing-output.html
Этот метод группирует ваш вывод с каждым конкретным модульным тестом.
В приведенной мной ссылке есть еще один метод для записи в окно вывода, но я предпочитаю предыдущий.
источник
Думаю, это все еще актуально.
Вы можете использовать этот пакет NuGet: Bitoxygen.Testing.Pane
Вызовите собственный метод WriteLine из этой библиотеки. Он создает панель тестирования внутри окна вывода и всегда помещает туда сообщения (во время каждого теста он запускается независимо от флагов DEBUG и TRACE).
Чтобы упростить трассировку, я могу порекомендовать создать базовый класс:
источник
Could not load file or assembly 'Microsoft.VisualStudio.Shell.12.0,
Попробуйте использовать:
Console.WriteLine()
Вызов
Debug.WriteLine
будет выполняться только во время определения DEBUG.Можно использовать и другие предложения:,
Trace.WriteLine
но я этого не пробовал.Также есть опция (не уверен, есть ли она в Visual Studio 2008), но вы все равно можете использовать ее
Debug.WriteLine
при запуске теста сTest With Debugger
опцией в IDE.источник
Решено на следующем примере:
После запуска этого теста в разделе «Тест пройден» есть возможность просмотреть результат, который откроет окно вывода.
источник
Это действительно зависит от исполнителя тестов, как упоминал @jonzim. Для NUnit 3 мне пришлось использовать
NUnit.Framework.TestContext.Progress.WriteLine()
для запуска вывода в окне вывода Visual Studio 2017.NUnit описывает, как: здесь
Насколько я понимаю, это связано с дополнительным распараллеливанием выполнения тестов, которое получили участники тестирования.
источник
Я не получаю выходных данных, если настройки моей тестовой / тестовой архитектуры / архитектуры процессора по умолчанию и сборки, на которые ссылается мой тестовый проект, не совпадают. В противном случае Trace.Writeline () работает нормально.
источник
Console.WriteLine не будет работать. В режиме отладки будут работать только Debug.WriteLine () или Trace.WriteLine ().
Я делаю следующее: включаю в тестовый модуль использование System.Diagnostics . Затем используйте Debug.WriteLine для вывода, щелкните тест правой кнопкой мыши и выберите Debug Selected Tests . Результат вывода теперь появится в окне вывода ниже. Я использую Visual Studio 2017 против 15.8.1 с платформой модульного тестирования по умолчанию, которую предоставляет VS.
источник
Вы уверены, что запускаете модульные тесты в Debug? Debug.WriteLine не будет вызываться в сборках Release.
Можно попробовать два варианта:
Trace.WriteLine (), который встроен в сборки выпуска, а также в отладку
Отмените определение DEBUG в настройках сборки для модульного теста
источник
Я использую xUnit, поэтому вот что использую:
PS: вы
Debugger.Break();
тоже можете использовать , чтобы вы могли видеть свой логинout
.источник
out
"?Другой вариант причины / решения:
Моя проблема заключалась в том, что я не получал вывода, потому что я записывал набор результатов из асинхронного вызова LINQ на консоль в цикле в асинхронном контексте:
Таким образом, тест не записывался в консоль до того, как объект консоли был очищен средой выполнения (при запуске только одного теста).
Решение заключалось в том, чтобы сначала преобразовать набор результатов в список, чтобы я мог использовать неасинхронную версию forEach ():
источник
В VS 2019
View
->Test Explorer
additional output
ссылку, как показано на скриншоте ниже.Ты можешь использовать:
все войдут в дополнительное окно вывода.
источник
Trace.WriteLine
должен работать при условии, что вы выбрали правильный вывод (раскрывающийся список с надписью «Показать вывод из» находится в окне вывода ).источник