Выходные данные терминала

Репортер тестов терминала — это встроенная реализация отчетов о состоянии и ходе выполнения в терминале (консоли). Это часть основного Microsoft. Testing.Platform (MTP) и не требует дополнительных пакетов NuGet.

Режимы вывода

Доступны два режима вывода:

  • NormalВыходные данные содержат баннер, полные сбои тестов, предупреждающие сообщения и сводку по выполнению. Выходные данные с одним неуспешным тестом и сводкой

  • Detailed, то же, что и Normal, но также предоставляет отчёты о Passed тестах. Результаты с одним неудавшимся и одним успешным тестом и сводкой

ANSI (Американский национальный институт стандартов)

Внутри есть 2 разных средства форматирования выходных данных, которые автоматически обнаруживают возможности терминала для обработки escape-кодов ANSI.

  • Форматировщик ANSI используется, если терминал может отрисовывать escape-коды.
  • Форматировщик non-ANSI используется, когда терминал не может обрабатывать escape-коды, когда используется --no-ansi или когда выходные данные перенаправляются.

По умолчанию используется автоматическое обнаружение возможностей.

Progress

Индикатор хода выполнения записывается в терминал. Индикатор хода выполнения показывает количество пройденных тестов, проваленных тестов и пропущенных тестов, а также имя тестируемой сборки, целевой среды и архитектуры.

индикатор выполнения с 23 пройденными тестами, 0 проваленных тестов и 0 пропущенных тестов

Индикатор выполнения создаётся на основе выбранного режима.

  • ANSI, индикатор выполнения анимирован, придерживается нижней части экрана и обновляется каждые 500 мс. Индикатор выполнения исчезает после завершения теста.
  • Не ANSI, индикатор хода выполнения записывается на экран каждые 3 секунды. Результаты сохраняются в выходных данных.

Непосредственный вывод в консоль и перерисовка индикатора выполнения

Чтобы анимировать индикатор выполнения, ANSI-рендерер индикатора выполнения берёт управление курсором терминала и многократно перерисовывает нижнюю часть экрана. Любой текст, который записывается непосредственно в stdout или stderr вне механизма перехвата фреймворка тестирования, может быть перезаписан или удален при этой перерисовке. Например, вызов Console.WriteLine из кода жизненного цикла на уровне сборки или сеанса (например, из перехватчика Before(Assembly) или Before(TestSession)) или из расширения может ненадолго появиться, а затем исчезнуть при обновлении индикатора выполнения.

Это поведение отличается от записанного стандартного вывода на тест и стандартной ошибки. Вывод, который тест выводит во время выполнения, перехватывается платформой и отображается в соответствии с --show-stdout и --show-stderr, поэтому индикатор хода выполнения его не перезаписывает.

Если код должен записываться непосредственно в консоль, а выходные данные должны оставаться видимыми, отключать ход выполнения (--progress off в MTP 2.3.0+ или --no-progress в более ранних версиях). Кроме того, отключите ANSI (--ansi off в MTP 2.3.0+ или --no-ansi более ранних версиях), чтобы использовать выходные данные хода выполнения, отличные от ANSI, которые добавляют новые строки вместо перерисовки на месте и не перезаписывают предыдущие прямые выходные данные.

Options

Опция Версия MTP Description
--no-progress Отключает отображение хода выполнения на экране. Устарело в MTP 2.3.0 в пользу использования --progress off.
--progress 2.3.0 Определяет, отображается ли ход выполнения. Допустимые значения: auto (по умолчанию), on (также принимает true, enable1), а off также (принимает false, , disable0).
--no-ansi Отключает вывод escape-символов ANSI на экран.
--ansi 2.3.0 Определяет, выводятся ли управляющие последовательности ANSI. Допустимые значения: auto (по умолчанию), on (также принимает true, enable1), а off также (принимает false, , disable0).
--output Указывает уровень подробности вывода результатов тестов. Допустимые значения — Normal и Detailed. По умолчанию — Normal.
--show-stdout 2.2.1 Определяет, когда показывать захваченный стандартный вывод теста. Допустимые значения: All, Failed и None. По умолчанию — All.
--show-stderr 2.2.1 Определяет, когда отображается записанная ошибка выходных данных теста. Допустимые значения: All, Failed и None. По умолчанию — All.

Замечание

Тире (—) в столбце версии MTP помечает основные параметры, которые не привязаны к определенной версии, так как они были доступны с момента первоначальных выпусков платформы.

Замечание

Начиная с MTP 2.3.0, когда MTP обнаруживает, что работает в среде инструмента LLM или ИИ, он скрывает стартовый баннер и изменяет значение по умолчанию для --show-stdout и --show-stderr с All на Failed, чтобы уменьшить шум.