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.
MSTest.Sdk é um SDK de projeto do MSBuild para a criação de aplicativos MSTest. É possível criar um aplicativo MSTest sem esse SDK, no entanto, o SDK do MSTest é:
- Adaptado para fornecer uma experiência de primeira classe para testes com o MSTest.
- O destino recomendado para a maioria dos usuários.
- Fácil de configurar para outros usuários.
Por padrão, o SDK do MSTest descobre e executa seus testes usando o executor MSTest para Microsoft.Testing.Platform. Você pode alternar para usar o VSTest especificando <UseVSTest>true</UseVSTest>
Para habilitar MSTest.Sdk em um projeto, basta atualizar o atributo Sdk do nó Project do seu projeto:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Observação
/3.10.2 é dado como exemplo e pode ser substituído por qualquer versão mais recente.
Para simplificar o gerenciamento das versões, recomendamos definir a versão do SDK no nível da solução usando o arquivo global.json. Por exemplo, seu arquivo de projeto teria a seguinte aparência:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Em seguida, especifique a versão do MSTest.Sdk no arquivo global.json da seguinte maneira:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.10.2"
}
}
Para obter mais informações, confira Usar os SDKs do projeto do MSBuild.
Quando você build cria o projeto, todos os componentes necessários são restaurados e instalados usando o fluxo de trabalho padrão do NuGet definido pelo seu projeto.
Você não precisa de mais nada para criar e executar seus testes e pode usar as mesmas ferramentas (por exemplo, dotnet test ou Visual Studio) usadas por um projeto MSTest "clássico".
Importante
Quando muda para MSTest.Sdk, você opta por usar o executor do MSTest (habilita o Microsoft.Testing.Platform para MSTest),, incluindo o dotnet test. Isso requer a modificação das suas chamadas de CI e CLI local e também afeta as entradas disponíveis de .runsettings. É possível usar MSTest.Sdk e ainda manter as integrações e ferramentas antigas alternando o executor.
Por padrão, MSTest.Sdk define EnableMSTestRunner e TestingPlatformDotnetTestSupport como verdadeiro. Para obter mais informações sobre o teste dotnet e seus diferentes modos para executar o Microsoft.Testing.Platform, consulte Teste com teste dotnet.
Testar bibliotecas de utilitários auxiliares
Se o projeto que usa MSTest.Sdk for destinado a ser uma biblioteca auxiliar do utilitário de teste e não contiver por si só nenhum teste executável, o projeto deverá ter <IsTestApplication>false</IsTestApplication>.
Selecionar o corredor
Por padrão, o SDK do MSTest depende do Microsoft.Testing.Platform, mas você pode alternar para o VSTest adicionando a propriedade <UseVSTest>true</UseVSTest>.
Extensões da Microsoft.Testing.Platform
Você pode personalizar a experiência Microsoft.Testing.Platform por meio de um conjunto de extensões de pacote NuGet. Para simplificar e melhorar essa experiência, o SDK do MSTest apresenta dois recursos:
Perfil Microsoft.Testing.Platform
O conceito de perfis permite selecionar o conjunto padrão de configurações e extensões que serão aplicadas ao seu projeto de teste.
Você pode definir o perfil usando a propriedade TestingExtensionsProfile com um dos três perfis a seguir:
None- Nenhuma extensão está habilitada.Default– Habilita as extensões recomendadas para esta versão do MSTest.SDK. Esse é o padrão quando a propriedade não é definida explicitamente.Habilita as seguintes extensões:
AllMicrosoft- Habilitar todas as extensões enviadas pela Microsoft (incluindo extensões com uma licença restritiva).Habilita as seguintes extensões:
Aqui está um exemplo completo, usando o perfil None:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
</Project>
| Extensão/Perfil | Nenhum | Padrão | AllMicrosoft |
|---|---|---|---|
| Cobertura de código | ✔️ | ✔️ | |
| Despejo de Memória | ✔️ | ||
| Falsificações | ✔️¹ | ||
| Despejo de travamento | ✔️ | ||
| Recarga Dinâmica | ✔️ | ||
| Tentar novamente | ✔️ | ||
| Trx | ✔️ | ✔️ | |
| AzureDevOpsReport | ✔️² |
¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+
Habilitar ou desabilitar extensões
As extensões podem ser habilitadas e desabilitadas pelas propriedades do MSBuild com o padrão Enable[NugetPackageNameWithoutDots].
Por exemplo, para habilitar a extensão de despejo de memória (pacote NuGet Microsoft.Testing.Extensions.CrashDump), você pode usar a seguinte propriedade EnableMicrosoftTestingExtensionsCrashDump definida como true:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
</Project>
Para obter uma lista de todas as extensões disponíveis, consulte Extensões Microsoft.Testing.Platform.
Aviso
É importante revisar os termos de licenciamento de cada extensão, pois eles podem variar.
As extensões habilitadas e desabilitadas 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, além do perfil implícito Default (como visto no exemplo anterior de CrashDumpExtension).
Você também pode desabilitar uma extensão proveniente do perfil selecionado. Por exemplo, desabilite a MS Code Coverage extensão definindo <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:
<Project Sdk="MSTest.Sdk/3.10.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
</Project>
Recursos
Além da seleção do executor e das extensões específicas do executor, MSTest.Sdk também fornece recursos adicionais para simplificar e aprimorar sua experiência de teste.
Testar com o Aspire
O Aspire é uma pilha opinativa, preparada para a nuvem, para construir aplicações distribuídas, observáveis e prontas para produção. O Aspire é entregue por meio de uma coleção de pacotes NuGet que lidam com preocupações específicas nativas da nuvem. Para obter mais informações, consulte os documentos do Aspire.
Observação
Esse 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 testes com Aspire e MSTest.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
</Project>
Teste com o Playwright
O Playwright oferece testes de ponta a ponta confiáveis para aplicativos Web modernos. Para obter mais informações, consulte os documentos oficiais do Playwright.
Observação
Esse 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 testes com Playwright e MSTest.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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 seu projeto
Ao migrar um projeto de teste MSTest existente para o SDK do MSTest, comece substituindo a entrada Sdk="Microsoft.NET.Sdk" na parte superior do projeto de teste por Sdk="MSTest.Sdk"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
Adicione a versão à sua global.json:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.10.2"
}
}
Em seguida, você pode começar a simplificar seu projeto.
Remover as propriedades padrão:
- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>
Remover 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 você está usando, você também pode remover alguns dos pacotes Microsoft.Testing.Extensions.*.
Atualizar sua CI
Depois de atualizar seus projetos, se você estiver usando Microsoft.Testing.Platform (padrão) e se depender de dotnet test para executar seus testes, atualize sua configuração de CI. Para obter mais informações e orientar sua compreensão de todas as alterações necessárias, consulte integração de teste dotnet.
Se você estiver usando o modo VSTest de dotnet test, aqui está uma atualização de exemplo ao usar a tarefa DotNetCoreCLI no 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 do MSBuild fornecidos pelo NuGet (incluindo MSTest.Sdk) têm suporte limitado de ferramentas quando se trata de atualizar sua versão, o que significa que a atualização normal do NuGet e a interface do usuário do Visual Studio para gerenciar pacotes NuGet não funcionam conforme o esperado. Você precisará atualizar manualmente a versão no global.json arquivo e no arquivo de projeto. (Isso se aplica mesmo se você usar Dependabot devido a problemas dependabot-core#12824 e dependabot-core#8615.)