Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье представлена информация о команде CLI dotnet test, включая историю совместимости с VSTest и Майкрософт.Testing.Platform (MTP).
Команда dotnet test работает в двух основных режимах:
-
VSTest: это режим по умолчанию для
dotnet testи единственный режим, доступный до пакета SDK .NET 10. Он предназначен в основном для VSTest, но также может выполнять тестирование Майкрософт.Testing.Platform с помощью пакета NuGet Майкрософт.Testing.Platform.MSBuild. - Режим Майкрософт.Testing.Platform: Введен в SDK .NET 10, этот режим поддерживает только тестовые приложения, созданные с использованием Майкрософт.Testing.Platform.
Подсказка
Для справки по CLI см. dotnet test.
Режим VSTest dotnet test
В течение длительного времени VSTest была единственной тестовой платформой в .NET. Следовательно, dotnet test был разработан исключительно для VSTest, с всеми параметрами командной строки, адаптированными к VSTest.
Процесс включает вызов цели MSBuild VSTest, которая активирует другие внутренние цели для запуска и в конечном итоге запускает vstest.console. Все dotnet test параметры командной строки переводятся в эквиваленты в vstest.console.
Запуск проектов MTP с помощью режима VSTest
dotnet test предназначен для запуска проектов VSTest в режиме VSTest. Однако можно запускать проекты MTP в режиме dotnet test VSTest с помощью пакета Майкрософт.Testing.Platform.MSBuild. С точки зрения пользователя, эта поддержка включена, установив значение TestingPlatformDotnetTestSupport для свойства MSBuild true (по умолчанию это false по причинам обратной совместимости). Если для этого свойства задано значение true, Майкрософт. Testing.Platform.MSBuild изменяет поведение целевого объекта VSTest, перенаправляя его для вызова InvokeTestingPlatform.
InvokeTestingPlatform — это целевой объект MSBuild, включенный в Майкрософт. Testing.Platform.MSBuild, отвечающий за правильное выполнение тестовых приложений MTP в качестве исполняемых файлов. Параметры командной строки, относящиеся к VSTest, такие как --logger, автоматически игнорируются в этом режиме. Чтобы включить аргументы, относящиеся к MTP, например --report-trx, их необходимо добавить после дополнительного --. Например: dotnet test -- --report-trx. В MTP 1.9 предупреждение с кодом MTP0001 создается при обнаружении аргумента, который автоматически игнорируется.
Примечание.
MSTest и NUnit используют пакет Майкрософт.Testing.Extensions.VSTestBridge. Задав параметр EnableMSTestRunner или EnableNUnitRunner (который включает Майкрософт. Test.Platform), тестовый проект будет поддерживать как VSTest, так и Майкрософт. Testing.Platform.
В этом сценарии, если вы используете режим dotnet test VSTest и не установите значение true для TestingPlatformDotnetTestSupport, вы фактически работаете полностью с VSTest, как если бы значения true не были установлены для EnableMSTestRunner и EnableNUnitRunner.
Примечание.
Настоятельно рекомендуется задать TestingPlatformDotnetTestSupport свойство в Directory.Build.props. Это гарантирует, что вам не нужно добавлять его в каждый файл тестового проекта по отдельности. Кроме того, он предотвращает внедрение нового тестового проекта, который не задает это свойство, что может привести к решению, в котором некоторые проекты используют VSTest, а другие используют Майкрософт. Testing.Platform. Эта смешанная конфигурация может работать неправильно и является неподдерживаемой ситуацией.
Это важно
Запуск проектов MTP в режиме VSTest считается устаревшим в пользу более нового интерфейса в .NET 10 SDK. Поддержка выполнения в этом режиме будет удалена в Майкрософт. Testing.Platform версии 2 при запуске с помощью пакета SDK .NET 10. Поддержка остается доступной для пакета SDK .NET 9 и более ранних версий для обеспечения обратной совместимости.
Дополнительные сведения см. в разделе "Миграция на режим MTP dotnet test".
В следующем списке описаны параметры командной строки команды dotnet test в режиме VSTest, поддерживаемые Майкрософт. Testing.Platform. Эти параметры относятся к процессу сборки и не передаются в VSTest, поэтому они работают с MTP.
-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>
Подсказка
Аргументы командной строки тестового приложения можно настроить с помощью TestingPlatformCommandLineArguments свойства MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Показать сбой для каждого теста
По умолчанию тестовые сбои суммируются в файл .log, а в MSBuild сообщается один сбой для каждого тестового проекта.
Чтобы отобразить ошибки для каждого неудачного теста, укажите -p:TestingPlatformShowTestsFailure=true в командной строке или добавьте свойство <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> в файл проекта.
В командной строке:
dotnet test -p:TestingPlatformShowTestsFailure=true
Показать полные выходные данные платформы
По умолчанию все выходные данные консоли, которые записываются в базовый исполняемый файл теста, фиксируются и скрыты от пользователя. Сюда входят баннер, сведения о версии и отформатированные сведения о тесте.
Чтобы отобразить эти сведения вместе с выходными данными MSBuild, используйте <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.
Этот параметр не влияет на то, как платформа тестирования записывает выходные данные пользователей, написанные Console.WriteLine или другими аналогичными способами записи в консоль.
В командной строке:
dotnet test -p:TestingPlatformCaptureOutput=false
Дополнительные технические сведения
В dotnet test режиме VSTest используется -- для указания аргументов RunSettings. Изначально dotnet test предназначалось для передачи этих аргументов в качестве свойства MSBuild, которое называется VSTestCLIRunSettings. Таким образом, при выполнении тестовых приложений MTP в VSTest режиме мы переопределяем значение VSTestCLIRunSettings для представления аргументов приложения.
Сочетание VSTest и Майкрософт. Testing.Platform (MTP)
При запуске dotnet test в режиме VSTest рекомендуется избежать включения VSTest и Майкрософт. Testing.Platform в том же решении.
Этот сценарий официально не поддерживается, и следует учитывать следующее:
- Параметры командной строки, относящиеся к VSTest, будут применяться только к проектам VSTest, а не к тестовых приложениям MTP.
- Параметры командной строки, относящиеся к MTP, указанные после #D0, будут рассматриваться как аргументы RunSettings для проектов VSTest.
Основные выводы
- Чтобы запустить тестовые приложения MTP в режиме
dotnet testVSTest, следует использоватьМайкрософт.Testing.Platform.MSBuild, передать параметры командной строки для MTP после дополнительных--и задать для параметраTestingPlatformDotnetTestSupportзначениеtrue. - Параметры командной строки, ориентированные на VSTest, игнорируются автоматически.
Из-за этих проблем .NET появился новый режим dotnet test специально предназначен для MTP. Мы рекомендуем пользователям MTP перейти с режима VSTest dotnet test в новый режим с помощью пакета SDK .NET 10.
Майкрософт.Testing.Platform (MTP) режим dotnet test
Чтобы устранить проблемы, возникающие при запуске dotnet test с MTP в режиме VSTest, в пакете SDK .NET 10 был представлен новый режим, который специально разработан для MTP.
Чтобы включить этот режим, добавьте в файл следующую конфигурацию global.json :
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Это важно
Интерфейс dotnet test для MTP поддерживается только в Майкрософт.Testing.Platform версии 1.7 и более поздних версиях.
Так как этот режим специально предназначен для Майкрософт. Testing.Platform, ни TestingPlatformDotnetTestSupport, ни дополнительные -- не требуются.
Это важно
Этот режим совместим только с Майкрософт. Testing.Platform версии 1.7.0 и более поздних версий.
Это важно
Если тестовый проект поддерживает VSTest, но не поддерживает MTP, будет создана ошибка.
Подсказка
Аргументы командной строки тестового приложения можно настроить с помощью TestingPlatformCommandLineArguments свойства MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Перейдите в режим MTP dotnet test
Для пользователей MTP, использующих режим dotnet testVSTest, существует несколько действий, необходимых для миграции на более новый dotnet test интерфейс:
- Добавьте
testраздел вglobal.jsonфайл, как показано выше. - Удалите
TestingPlatformDotnetTestSupportсвойство MSBuild, так как оно больше не требуется. - Удалите свойства MSBuild
TestingPlatformCaptureOutputиTestingPlatformShowTestsFailure, так как они больше не используются новымdotnet test. - Удалите дополнительные
--, например,dotnet test -- --report-trxдолжно статьdotnet test --report-trx. - При передаче определенного решения (или каталога, содержащего решение), например,
dotnet test MySolution.slnэто должно статьdotnet test --solution MySolution.sln. - При передаче определенного проекта (или каталога, содержащего проект), например,
dotnet test MyProject.csprojэто должно статьdotnet test --project MyProject.csproj. - При передаче определенной библиотеки DLL, например,
dotnet test path/to/UnitTests.dll, это должно статьdotnet test --test-modules path/to/UnitTests.dll. Обратите внимание, что--test-modulesтакже поддерживает глоббинг.