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 aborda opções avançadas de configuração para MSTest.Sdk. Para configuração básica e introdução, veja Introdução ao MSTest.
Importante
Por defeito, o MSTest.Sdk usa o runner MSTest com MTP, incluindo dotnet test. Isto requer modificar o seu CI e as chamadas CLI locais, e também afeta as entradas disponíveis nos ficheiros .runsettings. Podes manter as integrações e ferramentas antigas mudando para VSTest.
MSTest.Sdk define EnableMSTestRunner e TestingPlatformDotnetTestSupport para true por defeito. Para mais informações sobre o teste dotnet e os seus diferentes modos, veja Testing with dotnet test.
Bibliotecas auxiliares do utilitário de teste
Se o project que usa o MSTest.Sdk for concebido para ser uma biblioteca auxiliar de utilidade de teste, e por si só não contém testes executáveis, o project deve ter <IsTestApplication>false</IsTestApplication>.
Selecione o corredor
Por defeito, o MSTest SDK depende do MTP, mas podes mudar para VSTest adicionando a propriedade <UseVSTest>true</UseVSTest>.
Estender o MTP
Pode personalizar a experiência MTP através de um conjunto de extensões de pacotes NuGet. Para simplificar e melhorar essa experiência, o MSTest SDK apresenta dois recursos:
Perfil Microsoft.Testing.Platform
O conceito de
Você pode definir o perfil usando a propriedade TestingExtensionsProfile com um dos três perfis a seguir:
None- Nenhuma extensão está ativada.Default- Habilita as extensões recomendadas para esta versão do MSTest.SDK. Este é o padrão quando a propriedade não é definida explicitamente.Permite as seguintes extensões:
AllMicrosoft- Ativar todas as extensões fornecidas pela Microsoft (incluindo extensões com licença restritiva).Permite as seguintes extensões:
- Cobertura de código
- Despejo de Erro
- Fakes (MSTest.Sdk 3.7.0+)
- Depósito de Hang
- Hot Reload
- Repetir
- Relatório Trx
- AzureDevOpsReport
Aqui está um exemplo completo, usando o perfil None.
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
</Project>
| Extensão/Perfil | Nenhum | Padrão | AllMicrosoft |
|---|---|---|---|
| Cobertura de código | ✔️ | ✔️ | |
| Despejo de Erro | ✔️ | ||
| Falsificações | ✔️¹ | ||
| Depósito de Hang | ✔️ | ||
| Hot Reload | ✔️ | ||
| Repetir | ✔️ | ||
| Trx | ✔️ | ✔️ | |
| AzureDevOpsReport | ✔️² |
¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+
Ativar ou desativar extensões
As extensões podem ser habilitadas e desabilitadas pelas propriedades do MSBuild com o padrão Enable[NugetPackageNameWithoutDots].
Por exemplo, para ativar a extensão de crash dump (pacote NuGet Microsoft. Testing.Extensions.CrashDump), pode usar a seguinte propriedade EnableMicrosoftTestingExtensionsCrashDump definida para true:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
</Project>
Para uma lista de todas as extensões disponíveis, veja as funcionalidades do MTP.
Aviso
É importante rever os termos de licenciamento para cada extensão, pois eles podem variar.
As extensões ativadas e desativadas são combinadas com as extensões fornecidas pelo perfil de extensão selecionado.
Esse padrão de propriedade pode ser usado para habilitar uma extensão adicional sobre o perfil implícito Default (como visto no exemplo CrashDumpExtension anterior).
Você também pode desativar uma extensão proveniente do perfil selecionado. Por exemplo, desative a MS Code Coverage extensão definindo <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
</Project>
Funcionalidades
Para além da seleção do runner e das extensões específicas para runner, MSTest.Sdk também fornece recursos adicionais para simplificar e melhorar a sua experiência de teste.
Teste com Aspire
Aspire é uma stack opinativa e pronta para a cloud para construir aplicações distribuídas observáveis, prontas para produção. Aspire é entregue através de uma coleção de pacotes NuGet que lidam com questões específicas nativas da nuvem. Para mais informações, consulte a Aspire documentação.
Nota
Este recurso está disponível no MSTest.Sdk 3.4.0.
Ao definir a propriedade EnableAspireTesting como true, você pode trazer todas as dependências e diretivas padrão using necessárias para testar com Aspire e MSTest.
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
</Project>
Teste com Dramaturgo
Playwright permite testes fiáveis de ponta a ponta para web apps modernas. Para mais informações, consulte os documentos oficiais do Dramaturgo.
Nota
Este recurso está disponível no MSTest.Sdk 3.4.0.
Ao definir a propriedade EnablePlaywright como true você pode trazer todas as dependências e diretivas padrão using necessárias para testar com Playwright e MSTest.
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<EnablePlaywright>true</EnablePlaywright>
</PropertyGroup>
</Project>
Migrar para o SDK do MSTest
Considere as etapas a seguir necessárias para migrar para o SDK do MSTest.
Atualize o seu projecto
Ao migrar um projeto de teste MSTest existente para o MSTest SDK, comece por substituir a entrada Sdk="Microsoft.NET.Sdk" no topo do seu projeto de teste por Sdk="MSTest.Sdk"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
Adicione a versão ao seu global.json:
{
"msbuild-sdks": {
"MSTest.Sdk": "4.1.0"
}
}
Depois podes começar a simplificar o teu projecto.
Remova as propriedades padrão:
- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>
Remova as referências de pacote padrão:
- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"
Finalmente, com base no perfil de extensões que está a usar, também pode remover alguns dos pacotes Microsoft.Testing.Extensions.*.
Atualize o seu CI
Depois de atualizar os seus projetos, se estiver usando MTP (por defeito) e se depender de dotnet test para executar os seus testes, é necessário atualizar a configuração do CI. Para obter mais informações e orientar a sua compreensão de todas as alterações necessárias, consulte dotnet test integration.
Se estiveres a usar o modo VSTest de dotnet test, aqui está um exemplo de atualização ao usar a tarefa DotNetCoreCLI em Azure DevOps:
\- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/**.sln'
- arguments: '--configuration Release'
+ arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'
Limitações conhecidas
Os SDKs MSBuild fornecidos pelo NuGet (incluindo o MSTest.Sdk) têm limitado suporte a ferramentas no que toca à atualização da sua versão, o que significa que a atualização habitual do NuGet e a interface Visual Studio para gerir pacotes NuGet não funcionam como esperado. Terás de atualizar manualmente a versão no ficheiro global.json e no ficheiro project. (Isto aplica-se mesmo que uses o Dependabot devido a problemas dependabot-core#12824 e dependabot-core#8615.)