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.
Neste artigo, você aprenderá a migrar do VSTest para o Microsoft.Testing.Platform.
Opte por usar a Microsoft.Testing.Platform
A primeira etapa na migração é optar por usar 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 orientações específicas do quadro.
MSTest
Microsoft.Testing.Platform é suportado pelo MSTest a partir da versão 3.2.0. No entanto, recomendamos atualizar para a versão mais recente disponível do MSTest.
**
Para optar por participar, adicione <EnableMSTestRunner>true</EnableMSTestRunner> num PropertyGroup, localizado num 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
Microsoft.Testing.Platform é suportado pelo NUnit3TestAdapter a partir da versão 5.0.0.
Para aceitar, adicione <EnableNUnitRunner>true</EnableNUnitRunner> em PropertyGroup no ficheiro Directory.Build.props.
xUnit.net
Microsoft.Testing.Platform é suportado a partir de xunit.v3.
Para aderir, adicione <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> num arquivo Directory.Build.props sob um PropertyGroup.
dotnet test
Adesão ao SDK do .NET 9 e versões anteriores
No SDK do .NET 9 e versões anteriores, não há suporte nativo para Microsoft.Testing.Platform para dotnet test. O suporte é construído sobre a infraestrutura VSTest. Para usar isto, adicione <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> sob um PropertyGroup num ficheiro Directory.Build.props.
Importante
Ao executar o suporte a Microsoft.Testing.Platform nesse modo, você precisa adicionar -- para separar os dotnet test argumentos dos novos argumentos de plataforma. Por exemplo, dotnet test --no-build -- --list-tests.
Opt-in para 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
Neste modo, o extra -- deixa de ser utilizado.
Atualizar dotnet test invocações
As opções de linha de comando de dotnet test são divididas em duas categorias: argumentos relacionados à compilação e argumentos relacionados ao teste.
Os argumentos relacionados à compilação 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 despejo de memória) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type(requer a extensão de despejo de falhas) |
--blame-crash-collect-always |
Não suportado |
--blame-hang |
--hangdump (necessita da extensão "Hang dump") |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (requer extensão Hang dump) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (requer a extensão Hang Dump) |
--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 registador |
--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 de Microsoft.Testing.Platform é diferente e não há esse argumento centralizado a ser usado por todos os coletores de dados. Com Microsoft.Testing.Platform, cada coletor de dados pode adicionar sua própria opção de linha de comando. Por exemplo, a execução do Microsoft CodeCoverage através do VSTest pode ser semelhante à seguinte:
dotnet test --collect "Code Coverage;Format=cobertura"
Com Microsoft.Testing.Platform, isso se torna:
dotnet test --coverage --coverage-output-format cobertura
Importante
Como explicado anteriormente, ao usar o Microsoft.Testing.Platform com o VSTest-based dotnet test, extras -- são necessários antes dos argumentos que se destinam a ser 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 suportam o mesmo formato de filtro, mesmo quando executados com Microsoft.Testing.Platform.
xUnit.net, não suporta o 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 seguintes opções de linha de comando.
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 de Microsoft.Testing.Platform para xUnit.net e Query Filter Language for xUnit.net.
--logger
O que era geralmente referido como "logger" no VSTest é referido como "reporter" em Microsoft.Testing.Platform. Em Microsoft.Testing.Platform, o registro em log é explicitamente apenas para fins de diagnóstico.
Semelhante ao --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 Microsoft.Testing.Platform é livre para adicionar sua própria opção de linha de comando e, como tal, não há nenhuma opção de linha de comando centralizada como a --loggerdo VSTest.
Um dos registradores VSTest muito usados é o registrador TRX. Este registador é geralmente chamado da seguinte forma:
dotnet test --logger trx
Com Microsoft.Testing.Platform, o comando torna-se:
dotnet test --report-trx
Importante
Para usar --report-trx, deve ter o pacote NuGet Microsoft.Testing.Extensions.TrxReport instalado.
Importante
Como explicado anteriormente, ao utilizar a plataforma Microsoft.Testing.Platform com o VSTest dotnet test, é necessário incluir um extra -- antes dos argumentos que se pretendem passar para a plataforma.
Então, isso se torna dotnet test -- --report-trx.
--settings
VSTest's --settings é usado para especificar um arquivo RunSettings para a execução de teste. RunSettings não é suportado pelo núcleo Microsoft.Testing.Platform e foi substituído por um arquivo de configuração mais moderno testconfig.json . No entanto, MSTest e NUnit ainda suportam o antigo RunSettings ao executar Microsoft.Testing.Platform e --settings ainda é suportado.
vstest.console.exe
Se você estiver usando vstest.console.exe diretamente, recomendamos substituí-lo pelo dotnet test comando.
Explorador 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 oferece suporte a Microsoft.Testing.Platform a partir da versão 17.14. Se você estiver usando uma versão anterior, talvez seja necessário atualizar seu Visual Studio para a versão mais recente.
Código do Visual Studio
O Visual Studio Code com C# DevKit suporta Microsoft.Testing.Platform.
Azure DevOps
Ao usar tarefas do Azure DevOps, talvez seja necessário atualizar seu pipeline para usar Microsoft.Testing.Platform, dependendo da tarefa usada.
Tarefa VSTest
Se você estiver usando a tarefa VSTest no Azure DevOps, poderá substituí-la pela tarefa .NET Core.
Tarefa CLI do .NET Core
Se tiveste
argumentspersonalizado passado para a tarefa, segue as mesmas orientações para a 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, será necessário definir a tarefaargumentspara apontar corretamente para o diretório de resultados para o qual ela costumava apontar, bem como para o relatório TRX solicitado. Por exemplo:- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)