Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Из этой статьи вы узнаете, как перейти из 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)