Поделиться через


Устранение неполадок Microsoft.Testing.Platform

В этой статье содержатся рекомендации по устранению неполадок для Microsoft.Testing.Platform.

Коды выхода

Microsoft.Testing.Platform использует известные коды выхода для передачи ошибок теста или ошибок приложения. Коды выхода начинаются 0 и не являются отрицательными.

Код выхода Сведения
0 Код 0 выхода указывает на успешность. Все тесты, которые были выбраны для выполнения, выполнялись до завершения, и не было ошибок.
1 Код 1 выхода указывает на неизвестные ошибки и действует как универсальный механизм. Чтобы найти дополнительную информацию и подробности об ошибках, посмотрите в выходных данных.
2 Код 2 выхода используется для указания того, что произошел по крайней мере один тестовый сбой.
3 Код 3 выхода указывает, что тестовый сеанс прерван. Сеанс можно прервать с помощью ctrl+C, например.
4 Код 4 выхода указывает, что настройка используемых расширений недопустима, а сеанс тестов не может выполняться.
5 Код 5 выхода указывает, что аргументы командной строки, переданные тестовой приложению, были недопустимыми.
6 (больше не используется) Код выхода 6 больше не создается платформой; ранее он указывал, что тестовый сеанс использовал нереализованную функцию.
7 Код 7 выхода указывает, что тестовый сеанс не удалось завершить успешно и, вероятно, завершился сбоем. Это может быть вызвано тестовой сессией, которая была запущена через точку расширения контроллера тестирования.
8 Код 8 выхода указывает, что во время тестового сеанса не было выполнено ни одного теста.
9 Код 9 выхода указывает, что минимальная политика выполнения для выполненных тестов была нарушена.
10 Код 10 выхода указывает, что тестовый адаптер, Testing.Platform Test Framework, MSTest, NUnit или xUnit не смогли выполнить тесты по инфраструктурной причине, не связанной непосредственно с самим тестом. Примером может быть неудача в создании тестовой фикстуры, необходимой для проверок.
11 Код 11 выхода указывает, что тестовый процесс завершится, если зависимый процесс завершает работу.
12 Код 12 выхода указывает, что тестовый сеанс не удалось запустить, так как клиент не поддерживает ни одну из поддерживаемых версий протокола.
13 Код 13 выхода указывает, что тестовый сеанс был остановлен из-за достижения указанного количества максимальных неудачных тестов с помощью --maximum-failed-tests параметра командной строки. Дополнительные сведения см. в разделе "Параметры" в справочнике по параметрам интерфейса командной строки Microsoft.Testing.Platform

Сведения о включении подробного ведения журнала и устранении неполадок см. в разделе "Ведение журнала диагностики".

Игнорировать определенные коды выхода

Microsoft.Testing.Platform по умолчанию строгий, но позволяет настраивать конфигурацию. Таким образом, пользователи могут решить, какие коды выхода следует игнорировать (код 0 выхода возвращается вместо исходного кода выхода).

Чтобы игнорировать определенные коды выхода, используйте параметр командной --ignore-exit-codeTESTINGPLATFORM_EXITCODE_IGNORE строки или переменную среды. Допустимый формат — это разделенный точкой с запятой список кодов выхода, которые следует игнорировать (например, --ignore-exit-code 2;3;8). Распространенный сценарий заключается в том, что тестовые сбои не должны привести к ненулевому коду выхода (который соответствует игнорируемому коду 2выхода).

Ведение журнала диагностики

Платформа предоставляет встроенное ведение журнала диагностики для устранения неполадок при выполнении тестов. Вы можете включить ведение журнала диагностики с помощью параметров командной строки или переменных среды.

Параметры командной строки

Следующие параметры платформы предоставляют полезные сведения для устранения неполадок тестовых приложений:

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

Переменные среды

Журналы диагностики также можно включить с помощью переменных среды:

Имя переменной среды Description
TESTINGPLATFORM_DIAGNOSTIC Если задано значение 1, включает ведение журнала диагностики.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY Определяет уровень детализации. Доступные значения: Trace, Debug, Information, Warning, Errorили Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY Каталог вывода журнала диагностики: если не указан, файл создается в каталоге по умолчанию TestResults.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX Префикс имени файла журнала. По умолчанию — "log_".
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE Позволяет встроенному средству ведения журнала файлов синхронно записывать журналы. Полезно для сценариев, когда вы не хотите терять записи журнала (если процесс завершается сбоем). Это замедляет выполнение теста.

Замечание

Переменные среды имеют приоритет над аргументами командной строки.

Устранение ошибок конфигурации

Microsoft.Testing.Platform.MSBuild

Ниже приведены распространенные ошибки конфигурации, связанные с Microsoft.Testing.Platform.MSBuild.

ошибка CS8892: метод "TestingPlatformEntryPoint.Main(string[])" не будет использоваться в качестве точки входа, так как найдена синхронная точка входа Program.Main(string[])".

При ручном определении точки входа (Main) в тестовом проекте или при ссылке на тестовый проект из приложения, которое уже имеет точку входа, это приводит к конфликту с создаваемой точкой входа Microsoft.Testing.Platform. Чтобы избежать этой проблемы, выполните одно из следующих действий:

  • Удалите определяемую вручную точку входа, обычно Main метод в Program.cs, и позвольте платформе тестирования создать её для вас.

  • Отключите создание точки входа, задав свойство <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> MSBuild.

  • Полностью отключите транзитивную зависимость для Microsoft.Testing.Platform.MSBuild, задав свойство <IsTestingPlatformApplication>false</IsTestingPlatformApplication> MSBuild в проекте, который ссылается на тестовый проект. Это необходимо при ссылке на тестовый проект из проекта, отличного от тестового проекта, например консольного приложения, ссылающегося на тестовое приложение.

Microsoft.Testing.Extensions.Fakes

Ошибка Fakes: не удалось определить путь к профилировщику из значений переменных среды COR_PROFILER_PATH и COR_PROFILER.

Эта ошибка может возникать, если не все сборки Fakes присутствуют в папке bin.

  • Убедитесь, что проект использует MSTest.SDK или ссылается на Microsoft.Testing.Extensions.Fakes.
  • Для проектов .NET Framework не используйте параметр <PlatformTarget>AnyCPU</PlatformTarget>, так как это приводит к тому, что NuGet не копирует все файлы в папку bin.