Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo fornece informações sobre o comando CLI dotnet test, incluindo a sua compatibilidade histórica com VSTest e Microsoft.Testing.Platform (MTP).
O dotnet test comando opera em dois modos principais:
- Modo VSTest: Este é o modo padrão para
dotnet teste era o único disponível antes do SDK .NET 10. Foi concebido principalmente para o VSTest, mas também pode executar o Microsoft.Testing.Platform através do pacote NuGet Microsoft.Testing.Platform.MSBuild. - Microsoft.Testing.Platform mode: Introduzido com o SDK .NET 10, este modo é exclusivo para aplicações de teste construídas com Microsoft.Testing.Platform.
Sugestão
Para referência da CLI, consulte dotnet test.
Modo de VSTest de dotnet test
Durante muito tempo, o VSTest foi a única plataforma de testes em .NET. Consequentemente, dotnet test foi projetado exclusivamente para VSTest, com todas as opções de linha de comando adaptadas ao VSTest.
O processo envolve invocar o VSTest destino MSBuild, que aciona outros destinos internos para executar e, finalmente, executa vstest.console. Todas as dotnet test opções de linha de comando são convertidas para seus equivalentes em vstest.console.
Executar projetos MTP com o modo VSTest
dotnet test foi projetado para executar projetos VSTest no modo VSTest. No entanto, pode correr projetos MTP em modo VSTest dotnet test usando o Microsoft. Testing.Platform.MSBuild package. Da perspetiva do usuário, esse suporte é habilitado definindo a TestingPlatformDotnetTestSupport propriedade MSBuild como true (é por padrão por motivos de false compatibilidade com versões anteriores). Quando esta propriedade é definida para true, Microsoft.Testing.Platform.MSBuild altera o comportamento alvo VSTest, redirecionando-o para chamar InvokeTestingPlatform.
InvokeTestingPlatform é um alvo MSBuild incluído em Microsoft. Testing.Platform.MSBuild, que é responsável por executar corretamente aplicações de teste MTP como executáveis. Opções de linha de comando específicas do VSTest, como --logger, são silenciosamente ignoradas nesse modo. Para incluir argumentos específicos do MTP, como --report-trx, deve anexá-los após um --. Por exemplo, dotnet test -- --report-trx. No MTP 1.9, é emitido um aviso com o código MTP0001 quando é detetado um argumento que é ignorado silenciosamente.
Observação
MSTest e NUnit usam o Microsoft.Testing.Extensions.VSTestBridge. Definindo EnableMSTestRunner ou EnableNUnitRunner (o que permite Microsoft. Testing.Platform), o seu projeto de teste suportará tanto o VSTest como a Microsoft. Teste.Plataforma.
Nesse cenário, se você usar o modo VSTest de dotnet test e não definir TestingPlatformDotnetTestSupport como true, você está essencialmente executando inteiramente com VSTest, como se EnableMSTestRunner e EnableNUnitRunner não estão definidos como true.
Observação
É altamente recomendável definir a TestingPlatformDotnetTestSupport propriedade em Directory.Build.props. Isso garante que você não precise adicioná-lo a cada arquivo de projeto de teste individualmente. Além disso, previne o risco de introduzir um novo projeto de teste que não defina esta propriedade, o que pode resultar numa solução em que alguns projetos usam VSTest enquanto outros usam Microsoft. Teste.Plataforma. Essa configuração mista pode não funcionar corretamente e é um cenário sem suporte.
Importante
Executar projetos MTP no modo VSTest é considerado legado em favor da experiência mais recente no .NET 10 SDK. O suporte para executar sob este modo será removido na Microsoft.Testing.Platform versão 2 se for executado com o SDK .NET 10. O suporte continua disponível para o SDK .NET 9 e anteriores para compatibilidade retroativa.
Para obter mais informações, consulte Migrar para o modo MTP do dotnet test.
A lista seguinte descreve as opções de linha de comandos do comando dotnet test em modo VSTest que são suportadas por Microsoft. Teste.Plataforma. Essas opções são específicas para o processo de compilação e não transmitidas para o VSTest, e é por isso que eles trabalham com 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>
Sugestão
Você pode personalizar os argumentos de linha de comando do seu aplicativo de teste via TestingPlatformCommandLineArguments propriedade MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
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
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
Detalhes técnicos avançados
No dotnet test modo VSTest, o -- é usado para indicar os argumentos RunSettings. Originalmente, dotnet test foi projetado para passar esses argumentos como uma propriedade MSBuild chamada VSTestCLIRunSettings. Portanto, ao executar aplicações de teste MTP no modo VSTest, redefinimos o valor de VSTestCLIRunSettings para representar os "argumentos da aplicação".
Misturar VSTest e Microsoft. Testing.Platform (MTP)
Ao executar dotnet test em modo VSTest, recomenda-se evitar incluir tanto VSTest como Microsoft. Testing.Platform na mesma solução.
Este cenário não é oficialmente suportado, e você deve estar ciente do seguinte:
- As opções de linha de comando específicas do VSTest só se aplicarão a projetos VSTest e não a aplicativos de teste MTP.
- As opções de linha de comando específicas do MTP fornecidas depois de
--serão tratadas como argumentos RunSettings para projetos VSTest.
Principais conclusões
- Para executar aplicações de teste MTP no modo VSTest de
dotnet test, deve usarMicrosoft.Testing.Platform.MSBuild, passar as opções específicas de linha de comandos do MTP após o parâmetro extra--, e definirTestingPlatformDotnetTestSupportcomotrue. - As opções de linha de comando orientadas ao VSTest são silenciosamente ignoradas.
Devido a estes problemas, .NET introduziu um novo modo dotnet test especificamente concebido para MTP. Incentivamos os utilizadores de MTP a fazer a transição do modo VSTest dotnet test para o novo modo com o SDK .NET 10.
Microsoft. Modo Testing.Platform (MTP) de dotnet test
Para resolver os problemas encontrados ao correr dotnet test com MTP no modo VSTest, o .NET introduziu um novo modo no SDK .NET 10 especificamente projetado para MTP.
Para habilitar esse modo, adicione a seguinte configuração ao seu global.json arquivo:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Importante
A experiência dotnet test para MTP só é suportada a partir da Microsoft.Testing.Platform versão 1.7.
Como este modo foi especificamente desenhado para a Microsoft. Testing.Platform, nem TestingPlatformDotnetTestSupport nem os -- adicionais são necessários.
Importante
Este modo só é compatível com a Microsoft. Testing.Platform versão 1.7.0 e posteriores.
Importante
Se o seu projeto de teste suporta VSTest mas não suporta MTP, um erro será gerado.
Sugestão
Você pode personalizar os argumentos de linha de comando do seu aplicativo de teste via TestingPlatformCommandLineArguments propriedade MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Migrar para o modo MTP de dotnet test
Para usuários de MTP que estão usando o modo VSTest do dotnet test, há algumas ações necessárias para migrar para a experiência mais recente dotnet test :
- Adicione
testseção ao seuglobal.jsonarquivo, como mostrado acima. - Remova
TestingPlatformDotnetTestSupporta propriedade MSBuild, pois ela não é mais necessária. - Remova
TestingPlatformCaptureOutputeTestingPlatformShowTestsFailurepropriedades MSBuild, uma vez que elas não são mais usadas pelo novodotnet test. - Remova o extra
--, por exemplodotnet test -- --report-trx, deve se tornardotnet test --report-trx. - Se passar uma solução específica (ou diretório contendo solução), por exemplo,
dotnet test MySolution.slnisso deve se tornardotnet test --solution MySolution.sln. - Se passar um projeto específico (ou diretório contendo projeto), por exemplo,
dotnet test MyProject.csproj, isto deve converter-se emdotnet test --project MyProject.csproj. - Se passar uma dll específica, por exemplo,
dotnet test path/to/UnitTests.dllisso deve se tornardotnet test --test-modules path/to/UnitTests.dll. Note que--test-modulestambém suporta globbing.