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 do MSBuild produzida ao executar testes por meio do Microsoft.Testing.Platform.
Este artigo mostra como usar dotnet test
para executar todos os testes em uma solução (*.sln) que usa Microsoft.Testing.Platform
.
dotnet test
integração
O comando de dotnet test é uma maneira de executar testes de soluções, projetos ou assemblies já criados. O 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
.
Integração dotnet test
– modo VSTest
Microsoft.Testing.Platform
fornece uma camada de compatibilidade (Ponte VSTest) para trabalhar com dotnet test
perfeitamente.
Os testes podem ser executados ao se executar:
dotnet test
Essa camada executa o teste por meio do VSTest e integra-se a ele no nível do Adaptador de Estrutura de Teste do VSTest.
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
em dotnet test
especificando a configuração de <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
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>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
Observação
É altamente recomendável que você 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 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.
Importante
Apesar de TestingPlatformDotnetTestSupport
estar definida como true
, a maioria das opções de linha de comando definidas no comando dotnet test permanecem orientadas para o VSTest e não impactam os testes que utilizam Microsoft.Testing.Platform
. Para fornecer argumentos para Microsoft.Testing.Platform
, você precisa usar um dos métodos descritos em sobre argumentos de linha de comando de Microsoft.Testing.Platform com o comando de teste dotnet.
A lista abaixo descreveu todas as opções de linha de comando dotnet test
compatíveis com 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 têm suporte porque estão vinculados à etapa de build e são independentes da plataforma de teste usada.
Argumentos de linha de comando Microsoft.Testing.Platform
com dotnet test
Você pode fornecer argumentos usados para chamar o aplicativo de teste de uma das seguintes maneiras:
A partir da
Microsoft.Testing.Platform
versão 1.4 (incluída 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
TestingPlatformCommandLineArguments
propriedade do MSBuild na linha de comando:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Ou no arquivo de 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 do 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 os erros por teste com falha, especifique -p:TestingPlatformShowTestsFailure=true
na linha de comando ou adicione a <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
propriedade ao arquivo de projeto.
Na linha de comando:
dotnet test -p:TestingPlatformShowTestsFailure=true
Ou 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>
<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 de console que o executável de teste subjacente escreve é capturada e ocultada do usuário. Isso inclui a faixa, as informações de versão e as informações de teste formatadas.
Para mostrar essas informações junto com a saída do MSBuild, use <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
.
Essa opção não afeta como a estrutura de teste captura a saída do usuário escrita por Console.WriteLine
ou outras maneiras semelhantes de escrever no console.
Na linha de comando:
dotnet test -p:TestingPlatformCaptureOutput=false
Ou 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>
<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.