Use Microsoft.Testing.Platform com dotnet test
Este artigo descreve como usar dotnet test
para executar testes ao usar Microsoft.Testing.Platform
e as várias opções disponíveis para configurar a saída MSBuild produzida ao executar testes por meio de Microsoft.Testing.Platform.
Este artigo mostra como usar o dotnet test
para executar todos os testes em uma solução (*.sln) que usa Microsoft.Testing.Platform
.
dotnet test
integração
O comando dotnet test é uma maneira de executar testes de soluções, projetos ou assemblies já construídos.
Microsoft.Testing.Platform se conecta a essa infraestrutura para fornecer uma maneira unificada de executar testes, especialmente ao migrar do VSTest para o Microsoft.Testing.Platform
.
dotnet test
integração - modo VSTest
Microsoft.Testing.Platform
fornece uma camada de compatibilidade (VSTest Bridge) para trabalhar com dotnet test
sem problemas.
Os testes podem ser executados executando:
dotnet test
Esta camada executa o teste através do VSTest e integra-se com ele no nível do VSTest Test Framework Adapter.
dotnet test
- Modo Microsoft.Testing.Platform
Por padrão, dotnet test
está usando o comportamento VSTest para executar testes. Você pode habilitar o suporte para Microsoft.Testing.Platform
no dotnet test
especificando a configuração <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
no arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
Observação
É altamente recomendável que defina a propriedade TestingPlatformDotnetTestSupport
em Directory.Build.props
. Dessa forma, você não precisa adicioná-lo a todos os arquivos de projeto de teste e não corre o risco de introduzir um novo projeto que não define essa propriedade e acabar com uma solução em que alguns projetos são VSTest enquanto outros são Microsoft.Testing.Platform, que pode não funcionar corretamente e é um cenário sem suporte.
Importante
Apesar de TestingPlatformDotnetTestSupport
estar definido para true
, a maioria das opções de linha de comando definidas no teste dotnet permanecem orientadas para VSTest e não afetam os testes baseados em Microsoft.Testing.Platform
. Para fornecer argumentos para Microsoft.Testing.Platform
, precisa usar um dos métodos descritos em argumentos da linha de comando do Microsoft.Testing.Platform com os argumentos do comando dotnet test.
A lista abaixo descreve todas as dotnet test
opções de linha de comando suportadas pelo Microsoft.Testing.Platform
:
-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>
Esses argumentos são suportados porque estão vinculados à etapa de compilação e são independentes da plataforma de teste usada.
Microsoft.Testing.Platform
argumentos de linha de comando com dotnet test
Você pode fornecer argumentos que são usados para chamar o aplicativo de teste de uma das seguintes maneiras:
A partir do
Microsoft.Testing.Platform
versão 1.4 (incluído no MSTest versão 3.6), você pode adicionar opções após o traço duplo--
na linha de comando:dotnet test -- --minimum-expected-tests 10
Usando a propriedade
TestingPlatformCommandLineArguments
MSBuild na linha de comando:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Ou no arquivo do projeto:
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
Opções adicionais do MSBuild
A integração do MSBuild fornece opções que podem ser especificadas no arquivo de projeto ou por meio de propriedades globais na linha de comando, como -p:TestingPlatformShowTestsFailure=true
.
Estas são as opções disponíveis:
Mostrar falha por teste
Por padrão, as falhas de teste são resumidas em um arquivo .log e uma única falha por projeto de teste é relatada ao MSBuild.
Para mostrar erros por teste com falha, especifique -p:TestingPlatformShowTestsFailure=true
na linha de comando ou adicione a propriedade <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
ao arquivo de projeto.
Na linha de comando:
dotnet test -p:TestingPlatformShowTestsFailure=true
Ou no arquivo do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
Mostrar saída completa da plataforma
Por padrão, toda a saída do console que o executável de teste subjacente grava é capturada e oculta do usuário. Isso inclui o banner, informações de versão e informações de teste formatadas.
Para mostrar essas informações junto com a saída do MSBuild, use <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
.
Esta opção não afeta a forma como o framework de teste captura a saída do utilizador escrita por Console.WriteLine
ou outras maneiras semelhantes de escrever para o console.
Na linha de comando:
dotnet test -p:TestingPlatformCaptureOutput=false
Ou no arquivo do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>
Importante
Todos os exemplos acima adicionam propriedades como EnableMSTestRunner
, TestingPlatformDotnetTestSupport
e TestingPlatformCaptureOutput
no arquivo csproj. No entanto, é altamente recomendável que você defina essas propriedades em Directory.Build.props
. Dessa forma, você não precisa adicioná-lo a todos os arquivos de projeto de teste e não corre o risco de introduzir um novo projeto que não define essas propriedades e acaba com uma solução em que alguns projetos são VSTest enquanto outros são Microsoft.Testing.Platform, que pode não funcionar corretamente e é um cenário sem suporte.