Atualizar do MSTestV1 para MSTestV2
Você pode atualizar seu projeto de teste redirecionando a versão MSTest referenciada em seu .csproj do MSTestV1 para MSTestV2. Nem todos os recursos no MSTestV1 foram passados para o MSTestV2, ou seja, algumas alterações podem ser necessárias para resolver erros. Confira Recursos MSTestV1 que não têm suporte no MSTestV2 para entender quais recursos não funcionam mais. Alguns deles podem precisar ser removidos de seus testes.
Remova a referência de assembly para Microsoft.VisualStudio.QualityTools.UnitTestFramework do projeto de teste de unidade.
Adicione referências de pacote NuGet ao MSTestV2, incluindo os pacotes MSTest.TestFramework e MSTest.TestAdapter no nuget.org. Você pode instalar pacotes no Console do Gerenciador de Pacotes NuGet com os seguintes comandos:
PM> Install-Package MSTest.TestAdapter -Version 3.1.1 PM> Install-Package MSTest.TestFramework -Version 3.1.1
Exemplo de csproj de estilo antigo
Exemplo de .csproj voltado para MSTestV1:
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
Exemplo de .csproj agora voltado para MSTestV2:
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
Observação
Os projetos de teste que são testes de interface do usuário codificados ou testes de carga da Web não são compatíveis com MSTestV2. Esses tipos de projeto foram preteridos. Leia mais sobre substituição de teste de interface do usuário codificada e substituição do Teste de Carga da Web.
Csproj no estilo SDK (.NET Core e .NET 5 ou posterior)
Se o .csproj for o .csproj no estilo mais recente do SDK, provavelmente você já está usando MSTestV2. Você pode encontrar os pacotes NuGet para MSTestV2 e o Adaptador MSTestV2 no NuGet.
Exemplo:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
Por que fazer upgrade para MSTestV2?
Em 2016, lançamos a próxima etapa na evolução da estrutura MSTest com MSTestV2. Você pode ler mais sobre essa alteração no anúncio postado no blog.
O MSTestV2 é mais facilmente adquirido e atualizado porque é entregue como um Pacote NuGet.
O MSTestV2 é de software livre.
Suporte uniforme à plataforma de aplicativos – O MSTestV2 é uma implementação convergida que dá suporte uniforme à plataforma de aplicativos no .NET Framework, no .NET Core, no ASP.NET Core e na UWP. Leia mais.
A implementação é totalmente multiplataforma (Windows, Linux, Mac). Leia mais.
O MSTestV2 dá suporte a direcionamento para .NET Framework 4.5.0 e posterior, .NET Core 1.0 e posterior (Aplicativos Universais do Windows 10+), ASP.NET Core 1.0 e posterior e .NET 5 e posterior.
Ele fornece um mecanismo uniforme de extensibilidade de usuário final único. Leia mais.
Ele dá suporte
DataRow
uniforme a todos os projetos de teste baseados em MSTest. Leia mais.Ele permite colocar o atributo
TestCategory
no nível de uma classe ou assembly. Leia mais.Os métodos de teste das classes base definidas em outro assembly agora são descobertos e executados na classe de teste derivada. Essa alteração traz um comportamento consistente com tipos de classe de teste derivados. Se esse comportamento não for necessário por motivos de compatibilidade, ele poderá ser alterado novamente usando as seguintes configurações de execução:
<RunSettings> <MSTest> <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> </MSTest> </RunSettings>
Ele fornece um controle mais refinado sobre a execução paralela por meio da execução paralela de testes no assembly. Isso permite a execução de testes em um assembly em paralelo.
O método
TestCleanup
em umaTestClass
é invocado mesmo se o métodoTestInitialize
correspondente falhar. Detalhes do problema.O tempo gasto por
AssemblyInitialize
eClassInitialize
não é contado na duração do teste. Essa alteração limita seu impacto em um tempo limite de teste.Os testes que não são executáveis podem ser configurados para serem marcados como com falha por meio da marca
MapNotRunnableToFailed
, que faz parte do nó do adaptador no arquivo.runsettings
.<RunSettings> <MSTest> <MapNotRunnableToFailed>true</MapNotRunnableToFailed> </MSTest> </RunSettings>
Recursos MSTestV1 que não são compatíveis com MSTestV2
- Os testes não podem ser incluídos em um "teste ordenado".
- Alterações no arquivo
.testsettings
:- Não pode mais ser usado para configurar o adaptador.
- Não há mais suporte à seção
<LegacySettings>
, o que significa que você não pode usá-la para definir atributos. Por exemplo,DeploymentItem
. Use o novo arquivo .runsettingspara a configuração de execução de teste.
- O adaptador não dá suporte a listas de teste especificadas como um arquivo .vsmdi.
- Não há suporte aos tipos "Projeto de teste de interface do usuário codificada" e "Projeto de teste de carga e desempenho da Web". Leia mais sobre substituição de teste de interface do usuário codificada e substituição do Teste de Carga da Web.
- Não há suporte à associação com um item de caso de teste no TFS.