Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Из этой статьи вы узнаете, как перейти из VSTest в Microsoft.Testing.Platform.
Согласие на использование Microsoft.Testing.Platform
Первым шагом в миграции является согласие на использование Microsoft.Testing.Platform.
Для всех тестовых фреймворков добавьте <OutputType>Exe</OutputType> ко всем тестовым проектам в решении. После этого следуйте инструкциям для конкретной платформы.
MSTest
Microsoft.Testing.Platform поддерживается MSTest начиная с версии 3.2.0. Однако рекомендуется обновить до последней доступной версии MSTest.
Чтобы принять участие, добавьте <EnableMSTestRunner>true</EnableMSTestRunner> под PropertyGroup в файл Directory.Build.props.
Замечание
При использовании MSTest.Sdk Microsoft.Testing.Platform используется по умолчанию, если <UseVSTest>true</UseVSTest> не указано.
NUnit
Microsoft.Testing.Platform поддерживается NUnit3TestAdapter начиная с версии 5.0.0.
Чтобы принять участие, добавьте <EnableNUnitRunner>true</EnableNUnitRunner> под PropertyGroup в файл Directory.Build.props.
xUnit.net
Microsoft.Testing.Platform поддерживается начиная с xunit.v3.
Чтобы принять участие, добавьте <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> под PropertyGroup в файл Directory.Build.props.
dotnet test
Подключение к пакету SDK для .NET 9 и более ранних версий
В пакете SDK для .NET 9 и более ранних версий для Microsoft.Testing.Platform нет dotnet test поддержки. Сервис поддержки построен на инфраструктуре VSTest. Чтобы использовать это, добавьте <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> в PropertyGroup в файл Directory.Build.props.
Это важно
При запуске поддержки Microsoft.Testing.Platform в этом режиме необходимо добавить -- для разделения dotnet test аргументов от новых аргументов платформы. Например: dotnet test --no-build -- --list-tests.
Включение пакета SDK для .NET 10 и более поздних версий
Начиная с пакета SDK для .NET 10, существует встроенная поддержка Microsoft.Testing.Platform. Чтобы использовать его, необходимо указать средство выполнения теста, как Microsoft.Testing.Platform в global.json:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Это важно
В этом режиме дополнительный -- больше не используется.
Обновление dotnet test вызовов
Параметры dotnet test командной строки разделены на две категории: аргументы, связанные со сборкой, и связанные с тестом аргументы.
Аргументы, связанные с сборкой, не относятся к тестовой платформе, и поэтому не нужно обновлять для новой платформы. Аргументы, связанные со сборкой, перечислены здесь:
-a|--arch <ARCHITECTURE>--artifacts-path <ARTIFACTS_DIR>-c|--configuration <CONFIGURATION>-f|--framework <FRAMEWORK>-e|--environment <NAME="VALUE">--interactive--no-build--nologo--no-restore-o|--output <OUTPUT_DIRECTORY>--os <OS>-r|--runtime <RUNTIME_IDENTIFIER>-v|--verbosity <LEVEL>
Аргументы, связанные с тестом, специфичны для VSTest, поэтому их нужно преобразовать, чтобы они соответствовали новой платформе. В следующей таблице показано сопоставление аргументов VSTest и новой платформы:
| Аргумент VSTest | Новый аргумент платформы |
|---|---|
--test-adapter-path <ADAPTER_PATH> |
Не относится к Microsoft.Testing.Platform |
--blame |
Не относится к Microsoft.Testing.Platform |
--blame-crash |
--crashdump (требуется расширение аварийного дампа) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type (требуется расширение аварийного дампа) |
--blame-crash-collect-always |
Не поддерживается |
--blame-hang |
--hangdump (требуется расширение дампа зависания) |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (требуется расширение дампа зависания) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (требуется расширение для создания дампа при зависании) |
--collect <DATA_COLLECTOR_NAME> |
Зависит от сборщика данных |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Зависит от выбранной платформы тестирования |
-l\|--logger <LOGGER> |
Зависит от логгера |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Зависит от выбранной платформы тестирования |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
--test-parameter (предоставлено VSTestBridge) |
--collect
--collect — это общая точка расширяемости в VSTest для любого сборщика данных. Модель расширяемости Microsoft.Testing.Platform отличается, и такой централизованный аргумент не используется всеми сборщиками данных. С помощью Microsoft.Testing.Platform каждый сборщик данных может добавить собственный параметр командной строки. Например, запуск Microsoft CodeCoverage через VSTest может быть аналогичен следующему:
dotnet test --collect "Code Coverage;Format=cobertura"
При использовании Microsoft.Testing.Platform это становится следующим:
dotnet test --coverage --coverage-output-format cobertura
Это важно
Как описано ранее, при использовании Microsoft.Testing.Platform с VSTest на основе dotnet test, требуется дополнительное -- перед аргументами, которые предназначены для передачи платформе.
Таким образом, это становится dotnet test -- --coverage --coverage-output-format cobertura.
--filter
--filter — это фильтр на основе VSTest.
MSTest и NUnit поддерживают один и тот же формат фильтра, даже если используется Microsoft.Testing.Platform.
xUnit.net не поддерживает тот же формат фильтра при запуске с помощью Microsoft.Testing.Platform. Необходимо выполнить миграцию из фильтра на основе VSTest в новую поддержку фильтра в xunit.v3, которая предоставляется с помощью следующих параметров командной строки.
xUnit.net специфичных опций:
--filter-class--filter-not-class--filter-method--filter-not-method--filter-namespace--filter-not-namespace--filter-trait--filter-not-trait--filter-query
Дополнительные сведения см. в документации по Microsoft.Testing.Platform для xUnit.net и языка фильтра запросов для xUnit.net.
--logger
Как правило, то, что называется "журналирование" в VSTest, называется "репортером" в Microsoft.Testing.Platform. В Microsoft.Testing.Platform ведение журнала явно предназначено только для диагностики.
--collectАналогично , --logger является общей точкой расширяемости в VSTest для любого средства ведения журнала (или, в контексте Microsoft.Testing.Platform, любой репортер). Каждый репортер Microsoft.Testing.Platform может добавить свой собственный параметр командной строки, и таким образом отсутствует централизованный параметр командной строки, например VSTest --logger.
Одним из наиболее часто используемых средств ведения журнала VSTest является средство ведения журнала TRX. Этот логгер обычно вызывается следующим образом:
dotnet test --logger trx
При использовании Microsoft.Testing.Platform команда становится следующей:
dotnet test --report-trx
Это важно
Для использования --report-trx необходимо установить пакет NuGet Microsoft.Testing.Extensions.TrxReport.
Это важно
Как описано ранее, при использовании Microsoft.Testing.Platform с VSTest dotnet test необходимо добавить дополнительный -- элемент, прежде чем аргументы, предназначенные для передачи на платформу.
Таким образом, это становится dotnet test -- --report-trx.
--settings
VSTest --settings используется для указания файла RunSettings для тестового запуска. RunSettings не поддерживается ядром Microsoft.Testing.Platform и заменен более современным testconfig.json файлом конфигурации. Однако MSTest и NUnit по-прежнему поддерживают старые файлы RunSettings при запуске Microsoft.Testing.Platform, а поддержка --settings также сохранена.
vstest.console.exe
Если вы используете vstest.console.exe непосредственно, рекомендуется заменить его командой dotnet test .
Обозреватель тестов
При использовании Обозревателя тестов Visual Studio или Visual Studio Code может потребоваться включить поддержку Microsoft.Testing.Platform.
Visual Studio
Visual Studio Test Explorer поддерживает Microsoft.Testing.Platform начиная с версии 17.14. Если вы используете более раннюю версию, может потребоваться обновить Visual Studio до последней версии.
Visual Studio Code
Visual Studio Code с C# DevKit поддерживает Microsoft.Testing.Platform.
Azure DevOps
При использовании задач Azure DevOps может потребоваться обновить конвейер для использования Microsoft.Testing.Platform в зависимости от используемой задачи.
Задача VSTest
Если вы используете задачу VSTest в Azure DevOps, ее можно заменить задачей .NET Core.
Задача .NET Core CLI
Если у вас были переданы пользовательские
argumentsдля задачи, следуйте тем же рекомендациям поdotnet testмиграции.Если вы используете задачу DotNetCoreCLI без активации родного интерфейса Microsoft.Testing.Platform для SDK .NET 10 и более поздних версий через файл
global.json, необходимо задать задачуarguments, чтобы правильно указать каталог результатов, в который она раньше указывала, а также запрошенный отчет TRX. Рассмотрим пример.- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)