Condividi tramite


Confronto tra Microsoft.Testing.Platform e VSTest

Microsoft.Testing.Platform è un'alternativa leggera e portabile a VSTest per l'esecuzione di test nella riga di comando, nelle pipeline di integrazione continua (CI), in Esplora test di Visual Studio e in Visual Studio Code. In questo articolo vengono illustrate le differenze principali tra lo strumento di esecuzione MSTest e VSTest.

Differenze nell'esecuzione dei test

I test vengono eseguiti in modi diversi a seconda dello strumento di esecuzione.

Eseguire test VSTest

VSTest viene fornito con Visual Studio, .NET SDK e come strumento autonomo nel pacchetto NuGet Microsoft.TestPlatform. VSTest usa un eseguibile dello strumento di esecuzione per eseguire test, denominati vstest.console.exe, che possono essere usati direttamente o tramite dotnet test.

Eseguire test Di Microsoft.Testing.Platform

Microsoft.Testing.Platform è incorporato direttamente nel progetto di test e non include file eseguibili aggiuntivi. Quando si esegue il file eseguibile del progetto, i test vengono eseguiti. Per altre informazioni sull'esecuzione di test Microsoft.Testing.Platform, vedere Panoramica di Microsoft.Testing.Platform: Eseguire ed eseguire test di debug.

Spazi dei nomi e pacchetti NuGet

Per acquisire familiarità con Microsoft.Testing.Platform e VSTest, è utile comprendere gli spazi dei nomi e i pacchetti NuGet usati da ognuno.

Spazi dei nomi VSTest

VSTest è una raccolta di strumenti di test noti anche come Piattaforma di test. Il codice sorgente VSTest è open source e disponibile nel repository GitHub microsoft/vstest. Il codice usa lo spazio dei nomi Microsoft.TestPlatform.*.

VSTest è estendibile e i tipi comuni vengono inseriti nel pacchetto NuGet Microsoft.TestPlatform.ObjectModel.

Spazi dei nomi Microsoft.Testing.Platform

Microsoft.Testing.Platform si basa sul pacchetto NuGet Microsoft.Testing.Platform e su altre librerie nello spazio dei Microsoft.Testing.* nomi . Come VSTest, Microsoft.Testing.Platform è open source e ha un repository GitHub microsoft/testfx.

Protocollo di comunicazione

Nota

Esplora test di Visual Studio supporta il protocollo Microsoft.Testing.Platform dalla versione 17.10 successiva. Se si eseguono o si esegue il debug dei test usando versioni precedenti di Visual Studio, Esplora test userà vstest.console.exe e il protocollo precedente per eseguire questi test.

Microsoft.Testing.Platform usa un protocollo basato su RPC JSON per comunicare tra Visual Studio e il processo di test runner. Il protocollo è documentato nel repository GitHub MSTest.

VSTest usa anche un protocollo di comunicazione basato su JSON, ma non è basato su JSON RPC.

Disabilitazione del nuovo protocollo

Per disabilitare l'uso del nuovo protocollo in Esplora test, è possibile modificare il file csproj e rimuovere la funzionalità di TestingPlatformServer.

<ItemGroup>
    <ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>

Eseguibili

VSTest include più eseguibili, in particolare vstest.console.exe, testhost.exee datacollector.exe. Tuttavia, MSTest è incorporato direttamente nel progetto di test e non include altri file eseguibili. L'eseguibile in cui viene compilato il progetto di test viene usato per ospitare tutti gli strumenti di test ed eseguire tutte le attività necessarie per eseguire i test.