Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece insights sobre o comando dotnet test
CLI, incluindo sua compatibilidade histórica com o VSTest e o Microsoft.Testing.Platform (MTP).
O dotnet test
comando opera em dois modos primários:
- Modo VSTest: esse é o modo padrão para
dotnet test
e era o único modo disponível antes do SDK do .NET 10. Ele foi projetado principalmente para o VSTest, mas também pode executar o teste Microsoft.Testing.Platform por meio do pacote NuGet Microsoft.Testing.Platform.MSBuild . - Modo Microsoft.Testing.Platform : introduzido com o SDK do .NET 10, esse modo dá suporte exclusivamente a aplicativos de teste criados com Microsoft.Testing.Platform.
Dica
Para referência da CLI, consulte dotnet test.
Modo VSTest de dotnet test
Por muito tempo, o VSTest foi a única plataforma de teste no .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 alvo VSTest
do MSBuild, que aciona outros alvos internos para serem executados e, por fim, executa o vstest.console. Todas as dotnet test
opções de linha de comando são traduzidas para seus equivalentes no vstest.console.
Executar projetos MTP com o modo VSTest
dotnet test
foi projetado para executar projetos VSTest no modo VSTest. No entanto, você pode executar projetos MTP no dotnet test
modo VSTest usando o pacote Microsoft.Testing.Platform.MSBuild . Do ponto de vista do usuário, esse suporte é habilitado definindo a TestingPlatformDotnetTestSupport
propriedade true
MSBuild como (por false
padrão, por motivos de compatibilidade com versões anteriores). Quando essa propriedade é definida como true
, Microsoft.Testing.Platform.MSBuild altera o comportamento de destino, redirecionando-o VSTest
para chamar InvokeTestingPlatform
. InvokeTestingPlatform
é um destino msbuild incluído em Microsoft.Testing.Platform.MSBuild que é responsável por executar corretamente aplicativos de teste MTP como executáveis. As 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
, você deve anexá-los depois de um --
adicional. Por exemplo, dotnet test -- --report-trx
.
Observação
MSTest e NUnit usam o pacote Microsoft.Testing.Extensions.VSTestBridge . Ao definir EnableMSTestRunner
ou EnableNUnitRunner
(que habilita o Microsoft.Testing.Platform), seu projeto de teste dará suporte ao VSTest e ao Microsoft.Testing.Platform.
Nesse cenário, se você usar o modo VSTest de dotnet test
e não definir TestingPlatformDotnetTestSupport
como true, você estará essencialmente executando inteiramente com o VSTest, como se EnableMSTestRunner
e EnableNUnitRunner
não estivesse definido 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, ele impede o risco de introduzir um novo projeto de teste que não define essa propriedade, o que pode resultar em uma solução em que alguns projetos usam o VSTest enquanto outros usam Microsoft.Testing.Platform. Essa configuração mista pode não funcionar corretamente e é um cenário sem suporte.
A lista a seguir descreve as opções de linha de comando do dotnet test
comando no modo VSTest compatíveis com Microsoft.Testing.Platform. Essas opções são específicas para o processo de build e não são passadas para o VSTest, razão pela qual funcionam 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>
Dica
Você pode personalizar os argumentos de linha de comando do aplicativo de teste por meio TestingPlatformCommandLineArguments
da propriedade MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Para obter mais informações específicas sobre a execução de projetos MTP no modo VSTest de dotnet test
, consulte Usar Microsoft.Testing.Platform com o modo VSTest de dotnet test
.
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 aplicativos de teste MTP no modo VSTest, redefinimos o valor para VSTestCLIRunSettings
representar os "argumentos do aplicativo".
Combinando VSTest e Microsoft.Testing.Platform (MTP)
Ao executar dotnet test
no modo VSTest, é recomendável evitar incluir o VSTest e o Microsoft.Testing.Platform na mesma solução.
Esse cenário não tem suporte oficial 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
--
serão tratadas como argumentos RunSettings para projetos VSTest.
Principais conclusões
- Para executar aplicativos de teste MTP no
dotnet test
modo VSTest, você deve usarMicrosoft.Testing.Platform.MSBuild
, passar as opções de linha de comando específicas do MTP após o extra--
e definirTestingPlatformDotnetTestSupport
comotrue
. - As opções de linha de comando orientadas ao VSTest são ignoradas silenciosamente.
Devido a esses problemas, o .NET introduziu um novo dotnet test
modo especificamente projetado para MTP. Incentivamos os usuários MTP a fazer a transição do modo VSTest dotnet test
para o novo modo com o SDK do .NET 10.
Modo Microsoft.Testing.Platform (MTP) de dotnet test
Para resolver os problemas encontrados durante a execução dotnet test
com MTP no modo VSTest, o .NET introduziu um novo modo no SDK do .NET 10 projetado especificamente para MTP.
Para habilitar esse modo, adicione um dotnet.config
arquivo à raiz do repositório ou da solução.
[dotnet.test:runner]
name = "Microsoft.Testing.Platform"
Observação
O formato será alterado de dotnet.test:runner
para dotnet.test.runner
no SDK do .NET 10 Preview 4.
Como esse modo foi projetado especificamente para Microsoft.Testing.Platform, não são necessários nem TestingPlatformDotnetTestSupport
nem o adicional --
.
Importante
Esse modo só é compatível com Microsoft.Testing.Platform versão 1.7.0 e posterior.
Importante
Se o projeto de teste der suporte ao VSTest, mas não der suporte ao MTP, um erro será gerado.
Dica
Você pode personalizar os argumentos de linha de comando do aplicativo de teste por meio TestingPlatformCommandLineArguments
da propriedade MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>