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 perspetivas sobre o comando CLI dotnet test
, incluindo o seu histórico de compatibilidade com VSTest e Microsoft.Testing.Platform (MTP).
O dotnet test
comando opera em dois modos principais:
-
Modo VSTest : Este é o modo padrão e
dotnet test
era o único modo disponível antes do SDK do .NET 10. Ele foi projetado principalmente para 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 suporta exclusivamente aplicativos de teste criados 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 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 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, você pode executar projetos MTP no dotnet test
modo VSTest usando o pacote Microsoft.Testing.Platform.MSBuild . 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 essa propriedade é definida como true
, Microsoft.Testing.Platform.MSBuild altera o comportamento de VSTest
destino, redirecionando-o 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. 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
.
Observação
MSTest e NUnit usam o pacote Microsoft.Testing.Extensions.VSTestBridge . Ao definir EnableMSTestRunner
ou EnableNUnitRunner
(que habilita Microsoft.Testing.Platform), seu projeto de teste suportará VSTest e Microsoft.Testing.Platform.
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, ele evita 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 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 comando dotnet test
no modo VSTest que são suportadas pelo Microsoft.Testing.Platform. 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>
Para mais informações específicas sobre a execução de projetos MTP no modo VSTest de dotnet test
, consulte Use o 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 aplicações de teste MTP no modo VSTest, redefinimos o valor de VSTestCLIRunSettings
para representar os "argumentos da aplicação".
Misturando VSTest e Microsoft.Testing.Platform (MTP)
Ao executar dotnet test
no modo VSTest, é recomendável evitar incluir VSTest e 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 aplicativos de teste MTP no
dotnet test
modo VSTest, você deve usarMicrosoft.Testing.Platform.MSBuild
, passar 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 silenciosamente ignoradas.
Devido a esses problemas, o .NET introduziu um novo dotnet test
modo projetado especificamente 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.
Microsoft.Testing.Platform (MTP) modo de dotnet test
Para resolver os problemas encontrados ao executar dotnet test
com MTP no modo VSTest, o .NET introduziu um novo modo no SDK do .NET 10 que foi projetado especificamente para MTP.
Para habilitar esse modo, adicione um dotnet.config
arquivo à raiz do repositório ou solução.
[dotnet.test.runner]
name = "Microsoft.Testing.Platform"
Importante
A dotnet test
experiência para MTP só é suportada na Microsoft.Testing.Platform
versão 1.7 e posterior.
Como este modo foi projetado especificamente para Microsoft.Testing.Platform, nem TestingPlatformDotnetTestSupport
nem o adicional --
são necessários.
Importante
Este modo só é compatível com Microsoft.Testing.Platform versão 1.7.0 e posterior.
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>