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.
Neste artigo, você aprenderá a migrar do VSTest para Microsoft.Testing.Platform.
Escolha usar Microsoft.Testing.Platform
A primeira etapa na migração é aceitar o uso do Microsoft.Testing.Platform.
Para todas as estruturas de teste, adicione <OutputType>Exe</OutputType> a todos os projetos de teste na solução. Depois disso, siga as diretrizes específicas da estrutura.
MSTest
O Microsoft.Testing.Platform tem suporte do MSTest a partir da 3.2.0. No entanto, recomendamos atualizar para a versão mais recente do MSTest disponível.
Para aderir, adicione <EnableMSTestRunner>true</EnableMSTestRunner> sob um PropertyGroup no arquivo Directory.Build.props.
Observação
Ao usar MSTest.Sdk, Microsoft.Testing.Platform é usado por padrão, a menos que <UseVSTest>true</UseVSTest> seja especificado.
NUnit
O Microsoft.Testing.Platform tem suporte do NUnit3TestAdapter a partir da versão 5.0.0.
Para habilitar a opção, adicione <EnableNUnitRunner>true</EnableNUnitRunner> sob um PropertyGroup no arquivo Directory.Build.props.
xUnit.net
Há suporte para Microsoft.Testing.Platform a partir do xunit.v3.
Para aderir, adicione <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> sob um PropertyGroup dentro do arquivo Directory.Build.props.
dotnet test
Optar pelo SDK .NET 9 e versões anteriores
No SDK do .NET 9 e anterior, não há suporte nativo para Microsoft.Testing.Platform para dotnet test. O suporte é criado com base na infraestrutura do VSTest. Para usá-lo, adicione <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> em um PropertyGroup no arquivo Directory.Build.props.
Importante
Ao executar o suporte do Microsoft.Testing.Platform nesse modo, você precisa adicionar -- para separar os dotnet test argumentos dos novos argumentos da plataforma. Por exemplo, dotnet test --no-build -- --list-tests.
Aceitar o SDK do .NET 10 e posterior
A partir do SDK do .NET 10, há suporte nativo para Microsoft.Testing.Platform. Para usá-lo, você deve especificar o executor de teste como Microsoft.Testing.Platform em global.json:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Importante
Nesse modo, o extra -- não é mais usado.
Atualizar dotnet test invocações
As opções de linha de comando dotnet test são divididas em duas categorias: argumentos relacionados ao build e argumentos relacionados ao teste.
Os argumentos relacionados ao build são irrelevantes para a plataforma de teste e, como tal, não precisam ser atualizados para a nova plataforma. Os argumentos relacionados ao build estão listados aqui:
-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>
Os argumentos relacionados ao teste são específicos do VSTest e, portanto, precisam ser transformados para corresponder à nova plataforma. A tabela a seguir mostra o mapeamento entre os argumentos VSTest e a nova plataforma:
| Argumento VSTest | Novo argumento de plataforma |
|---|---|
--test-adapter-path <ADAPTER_PATH> |
Não relevante para Microsoft.Testing.Platform |
--blame |
Não relevante para Microsoft.Testing.Platform |
--blame-crash |
--crashdump (requer extensão de crash dump) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type (requer extensão de despejo de falha) |
--blame-crash-collect-always |
Sem suporte |
--blame-hang |
--hangdump (requer extensão de despejo de falha) |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (requer extensão de despejo de congelamento) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (requer extensão de despejo de congelamento) |
--collect <DATA_COLLECTOR_NAME> |
Depende do coletor de dados |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Depende da estrutura de teste selecionada |
-l\|--logger <LOGGER> |
Depende do logger |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Depende da estrutura de teste selecionada |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
--test-parameter (fornecido por VSTestBridge) |
--collect
--collect é um ponto de extensibilidade geral no VSTest para qualquer coletor de dados. O modelo de extensibilidade do Microsoft.Testing.Platform é diferente e não há nenhum argumento centralizado a ser usado por todos os coletores de dados. Com o Microsoft.Testing.Platform, cada coletor de dados pode adicionar sua própria opção de linha de comando. Por exemplo, executar o Microsoft CodeCoverage por meio do VSTest pode ser semelhante ao seguinte:
dotnet test --collect "Code Coverage;Format=cobertura"
Com o Microsoft.Testing.Platform, isso se torna:
dotnet test --coverage --coverage-output-format cobertura
Importante
Conforme explicado anteriormente, ao usar o Microsoft.Testing.Platform com o VSTest, baseado em dotnet test, é necessário inserir elementos extras -- antes que os argumentos pretendidos sejam passados para a plataforma.
Então, isso se torna dotnet test -- --coverage --coverage-output-format cobertura.
--filter
--filter é o filtro baseado em VSTest.
MSTest e NUnit dão suporte ao mesmo formato de filtro mesmo quando executados com Microsoft.Testing.Platform.
xUnit.net, não dá suporte ao mesmo formato de filtro ao executar com Microsoft.Testing.Platform. Você deve migrar do filtro baseado em VSTest para o novo suporte de filtro em xunit.v3, que é fornecido usando as opções de linha de comando a seguir.
xUnit.net opções específicas:
--filter-class--filter-not-class--filter-method--filter-not-method--filter-namespace--filter-not-namespace--filter-trait--filter-not-trait--filter-query
Para obter mais informações, consulte a documentação Microsoft.Testing.Platform para xUnit.net e Linguagem de Filtro de Consulta para xUnit.net.
--logger
O que geralmente era chamado de "registrador" no VSTest é conhecido como "relator" no Microsoft.Testing.Platform. No Microsoft.Testing.Platform, o registro em log é explicitamente somente para fins de diagnóstico.
Semelhante a --collect, --logger é um ponto de extensibilidade geral no VSTest para qualquer registrador (ou, no contexto de Microsoft.Testing.Platform, qualquer repórter). Cada repórter do Microsoft.Testing.Platform tem liberdade para adicionar sua própria opção na linha de comando e, portanto, não há nenhuma opção na linha de comando centralizada como a do --loggerVSTest.
Um dos registradores VSTest mais comumente usados é o registrador TRX. Esse logger geralmente é chamado da seguinte maneira:
dotnet test --logger trx
Com Microsoft.Testing.Platform, o comando se torna:
dotnet test --report-trx
Importante
Para usar --report-trx, você deve ter o Microsoft.Testing.Extensions.TrxReport pacote NuGet instalado.
Importante
Conforme explicado anteriormente, ao usar Microsoft.Testing.Platform com o VSTest baseado dotnet test, é necessário extra -- antes de os argumentos pretendidos serem passados para a plataforma.
Então, isso se torna dotnet test -- --report-trx.
--settings
VSTest --settings é usado para especificar um arquivo RunSettings para a execução dos testes. O RunSettings não é compatível com o Microsoft.Testing.Platform principal e foi substituído por um arquivo de configuração mais moderno testconfig.json . No entanto, MSTest e NUnit ainda dão suporte aos RunSettings antigos ao executar o Microsoft.Testing.Platform e --settings ainda recebe suporte.
vstest.console.exe
Se você estiver usando vstest.console.exe diretamente, recomendamos substituí-lo pelo dotnet test comando.
Gerenciador de Testes
Ao usar o Visual Studio ou o Visual Studio Code Test Explorer, talvez seja necessário habilitar o suporte para Microsoft.Testing.Platform.
Visual Studio
O Gerenciador de Testes do Visual Studio dá suporte ao Microsoft.Testing.Platform a partir da versão 17.14. Se você estiver usando uma versão anterior, talvez seja necessário atualizar o Visual Studio para a versão mais recente.
Visual Studio Code
O Visual Studio Code com o C# DevKit dá suporte a Microsoft.Testing.Platform.
Azure DevOps
Ao usar tarefas do Azure DevOps, talvez seja necessário atualizar o pipeline para usar o Microsoft.Testing.Platform, dependendo de qual tarefa você usar.
Tarefa VSTest
Se você estiver usando a tarefa VSTest no Azure DevOps, poderá substituí-la pela tarefa .NET Core.
Tarefa da CLI do .NET Core
Se você tiver um
argumentspersonalizado passado para a tarefa, siga as mesmas diretrizes para migração dedotnet test.Se você estiver usando a tarefa DotNetCoreCLI sem aceitar a experiência nativa do Microsoft.Testing.Platform para o SDK do .NET 10 e posterior via
global.jsonarquivo, precisará definir a tarefaargumentspara apontar corretamente para o diretório de resultados para o qual ela costumava apontar, bem como o relatório TRX solicitado. Por exemplo:- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)