Freigeben über


Upgrade von MSTestV1 auf MSTestV2

Sie können Ihr Testprojekt aktualisieren, indem Sie die in Ihrem .csproj- referenzierte MSTest-Version von MSTestV1 auf MSTestV2 ändern. Nicht alle Features in MSTestV1 wurden in MSTestV2 eingeführt, daher können einige Änderungen erforderlich sein, um Fehler zu beheben. Lesen Sie MSTestV1-Features, die in MSTestV2 nicht unterstützt werden, um zu verstehen, welche Features nicht mehr funktionieren. Einige dieser Features müssen möglicherweise aus Ihren Tests entfernt werden.

  1. Entfernen Sie den Assemblyverweis auf Microsoft.VisualStudio.QualityTools.UnitTestFramework aus Ihrem Komponententestprojekt.

  2. Fügen Sie NuGet-Paketverweise zu MSTestV2 hinzu, einschließlich der MSTest.TestFramework- und der MSTest.TestAdapter--Pakete auf nuget.org. Sie können Pakete in der NuGet-Paket-Manager-Konsole mit den folgenden Befehlen installieren:

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

CSPROJ-Beispiel im alten Format

CSPROJ-Beispieldatei mit Ziel MSTestV1:

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

Beispiel .csproj jetzt auf MSTestV2 ausgerichtet:

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

Anmerkung

Testprojekte, bei denen es sich um Coded UI-Tests oder Web load Tests handelt, sind nicht mit MSTestV2 kompatibel. Diese Projekttypen sind veraltet. Weitere Informationen finden Sie unter Veraltete Coded UI-Tests und Veraltete Webauslastungstests.

CSPROJ-Datei im SDK-Stil (.NET Core und .NET 5 oder höhere Version)

Wenn Ihr .csproj im neuen SDK-Stil .csproj ist, verwenden Sie höchstwahrscheinlich bereits MSTestV2. Sie finden die NuGet-Pakete für MSTestV2- und den MSTestV2-Adapter- auf NuGet.

Beispiel:

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

Warum upgraden auf MSTestV2?

Im Jahr 2016 haben wir den nächsten Schritt in der Entwicklung des MSTest-Frameworks mit MSTestV2 veröffentlicht. Weitere Informationen zu dieser Änderung finden Sie im Blogbeitrag zur Ankündigung.

  • MSTestV2 wird einfacher erworben und aktualisiert, da es als NuGet Packagegeliefert wird.

  • MSTestV2 ist Open Source.

  • Einheitliche App-Plattform-Unterstützung – MSTestV2 ist eine konvergierte Implementierung, die einheitliche App-Plattform-Unterstützung für .NET Framework, .NET Core, ASP.NET Core und UWP bietet. Mehr erfahren.

  • Die Implementierung ist vollständig plattformübergreifend (Windows, Linux, Mac). Mehr erfahren.

  • MSTestV2 unterstützt die Zielbestimmung für .NET Framework 4.5.0 und höher, .NET Core 1.0 und höher (Universelle Windows-Apps 10+), ASP.NET Core 1.0 und höher sowie .NET 5 und höher.

  • Stellt einen einheitlichen, einzelnen Endbenutzererweiterungsmechanismus bereit. Mehr erfahren.

  • Stellt eine einheitliche DataRow Unterstützung für alle MSTest-basierten Testprojekte bereit. Mehr erfahren.

  • Ermöglicht das Platzieren des TestCategory-Attributs auf der Ebene einer Klasse oder Assembly. Mehr lesen.

  • Testmethoden aus basisklassen, die in einer anderen Assembly definiert sind, werden jetzt ermittelt und von der abgeleiteten Testklasse ausgeführt. Diese Änderung führt zu einem konsistenten Verhalten mit abgeleiteten Testklassentypen. Wenn dieses Verhalten aus Kompatibilitätsgründen nicht erforderlich ist, kann es mithilfe der folgenden Ausführungseinstellungen wieder geändert werden:

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Bietet eine präzisere Steuerung der parallelen Ausführung über parallele Ausführung von Tests in der Assembly Dieses Feature ermöglicht das Ausführen von Tests innerhalb einer Assembly parallel.

  • Die TestCleanup-Methode für eine TestClass wird aufgerufen, auch wenn die entsprechende TestInitialize-Methode fehlschlägt. Details zum Problem

  • Die von AssemblyInitialize und ClassInitialize benötigte Zeit wird nicht auf die Testdauer gezählt. Diese Änderung schränkt die Auswirkungen auf ein Timeout des Tests ein.

  • Tests, die nicht ausgeführt werden können, können so konfiguriert werden, dass sie über das MapNotRunnableToFailed-Tag als fehlgeschlagen gekennzeichnet werden, das Teil des Adapterknotens in der .runsettings-Datei ist.

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

MSTestV1-Features, die in MSTestV2 nicht unterstützt werden

  • Tests können nicht in einen "bestellten Test" eingeschlossen werden.
  • Änderungen an der .testsettings-Datei:
    • Kann nicht mehr zum Konfigurieren des Adapters verwendet werden.
    • Der abschnitt <LegacySettings> wird nicht mehr unterstützt, d. h., Sie können ihn nicht zum Festlegen von Attributen verwenden. Beispiel: DeploymentItem. Verwenden Sie die neue .runsettings Datei für die Testausführungskonfiguration.
  • Der Adapter unterstützt keine Testlisten, die als .vsmdi--Datei angegeben sind.
  • Die Typen "Coded UI Test Project" und "Web Performance and Load Test Project" werden nicht unterstützt. Weitere Informationen finden Sie unter Abschaffung von Coded-UI-Tests und Abschaffung der Web-Load-Tests.
  • Die Zuordnung zu einem Testcase-Element in TFS wird nicht unterstützt.