Eseguire l'aggiornamento da MSTestV1 a MSTestV2

È possibile aggiornare il progetto di test retargeting la versione MSTest a cui si fa riferimento nel file con estensione csproj da MSTestV1 a MSTestV2. Non tutte le funzionalità di MSTestV1 sono state inoltrate in MSTestV2, quindi potrebbero essere necessarie alcune modifiche per risolvere gli errori. Vedere Funzionalità di MSTestV1 non supportate in MSTestV2 per comprendere quali funzionalità non funzionano più. Alcune di queste funzionalità potrebbero essere necessarie per essere rimosse dai test.

  1. Rimuovere il riferimento all'assembly a Microsoft.VisualStudio.QualityTools.UnitTestFramework dal progetto di unit test.

  2. Aggiungere riferimenti al pacchetto NuGet a MSTestV2, inclusi i pacchetti MSTest.TestFramework e MSTest.TestAdapter in nuget.org. È possibile installare i pacchetti nella console di Gestione pacchetti NuGet con i comandi seguenti:

    PM> Install-Package MSTest.TestAdapter -Version 3.1.1
    PM> Install-Package MSTest.TestFramework -Version 3.1.1
    

Esempio csproj di stile precedente

Estensione csproj di esempio destinata a MSTestV1:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <Private>False</Private>
</Reference>

Estensione csproj di esempio ora destinata a 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>

Nota

I progetti di test codificati dell'interfaccia utente o test di carico Web non sono compatibili con MSTestV2. Questi tipi di progetto sono stati deprecati. Per altre informazioni, vedere Deprecazione del test codificato dell'interfaccia utente e deprecazione del test di carico Web.

Csproj in stile SDK (.NET Core e .NET 5 o versione successiva)

Se il file con estensione csproj è il file con estensione csproj più recente in stile SDK, probabilmente si sta già usando MSTestV2. È possibile trovare i pacchetti NuGet per MSTestV2 e l'adapter MSTestV2 in NuGet.

Esempio:

<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>

Perché eseguire l'aggiornamento a MSTestV2?

Nel 2016 è stato rilasciato il passaggio successivo per l'evoluzione del framework MSTest con MSTestV2. Per altre informazioni su questa modifica, vedere il post di blog dell'annuncio.

  • MSTestV2 viene acquisito e aggiornato più facilmente perché viene distribuito come pacchetto NuGet.

  • MSTestV2 è open source.

  • Supporto uniforme della piattaforma app: MSTestV2 è un'implementazione convergente che offre un supporto uniforme della piattaforma app in .NET Framework, .NET Core, ASP.NET Core e UWP. Altre informazioni.

  • L'implementazione è completamente multipiattaforma (Windows, Linux, Mac). Altre informazioni.

  • MSTestV2 supporta la destinazione .NET Framework 4.5.0 e versioni successive, .NET Core 1.0 e versioni successive (App di Windows universali 10+), ASP.NET Core 1.0 e versioni successive e .NET 5 e versioni successive.

  • Fornisce un meccanismo di estendibilità uniforme e utente singolo. Altre informazioni.

  • Fornisce un supporto uniforme DataRow per tutti i progetti di test basati su MSTest. Altre informazioni.

  • Abilita l'inserimento dell'attributo TestCategory al livello di una classe o di un assembly. Altre informazioni.

  • I metodi di test delle classi di base definite in un altro assembly vengono ora individuati ed eseguiti dalla classe Test derivata. Questa modifica comporta un comportamento coerente con i tipi di classe di test derivati. Se questo comportamento non è necessario per motivi di compatibilità, può essere modificato usando le impostazioni di esecuzione seguenti:

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Fornisce un controllo più dettagliato sull'esecuzione parallela tramite l'esecuzione parallela in-assembly dei test. Questa funzionalità abilita l'esecuzione di test all'interno di un assembly in parallelo.

  • Il TestCleanup metodo su un TestClass viene richiamato anche se il metodo corrispondente TestInitialize ha esito negativo. Dettagli del problema.

  • Il tempo impiegato da AssemblyInitialize e ClassInitialize non viene conteggiato per la durata del test. Questa modifica limita l'impatto su un timeout dei test.

  • I test che non sono eseguibili possono essere configurati per essere contrassegnati come non riusciti tramite il MapNotRunnableToFailed tag , che fa parte del nodo dell'adapter nel .runsettings file.

    <RunSettings>    
    <MSTest> 
      <MapNotRunnableToFailed>true</MapNotRunnableToFailed> 
    </MSTest> 
    </RunSettings>
    

Funzionalità di MSTestV1 non supportate in MSTestV2

  • I test non possono essere inclusi in un "Test ordinato".
  • Modifiche apportate al .testsettings file:
    • Non è più possibile utilizzare per configurare l'adattatore.
    • Non supporta più la <LegacySettings> sezione, ovvero non è possibile usarla per impostare gli attributi. Ad esempio: DeploymentItem. Usare il nuovo file con estensione runsettings per la configurazione dell'esecuzione di test.
  • L'adapter non supporta gli elenchi di test specificati come file con estensione vsmdi .
  • I tipi "Progetto di test codificato dell'interfaccia utente" e "Progetto test di carico e prestazioni Web" non sono supportati. Per altre informazioni, vedere Deprecazione del test codificato dell'interfaccia utente e deprecazione del test di carico Web.
  • L'associazione a un elemento testcase in TFS non è supportata.