Uaktualnianie z msTestV1 do MSTestV2

Projekt testowy można uaktualnić, przywracając wersję MSTest przywołyną w pliku csproj z msTestV1 do MSTestV2. Nie wszystkie funkcje w msTestV1 zostały wprowadzone do MSTestV2, więc niektóre zmiany mogą być wymagane do usunięcia błędów. Zobacz funkcje MSTestV1, które nie są obsługiwane w msTestV2 , aby dowiedzieć się, jakie funkcje już nie działają. Niektóre z tych funkcji mogą wymagać usunięcia z testów.

  1. Usuń odwołanie do zestawu Microsoft.VisualStudio.QualityTools.UnitTestFramework z projektu testów jednostkowych.

  2. Dodaj odwołania do pakietu NuGet do msTestV2, w tym msTest.TestFramework i pakiety MSTest.TestAdapter w nuget.org. Pakiety można zainstalować w konsoli Menedżer pakietów NuGet za pomocą następujących poleceń:

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

Przykład starego stylu csproj

Przykładowy plik csproj przeznaczony dla msTestV1:

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

Przykładowy plik csproj jest teraz przeznaczony dla 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>

Uwaga

Projekty testowe, które są kodowanymi testami interfejsu użytkownika lub internetowymi testami obciążeniowymi, nie są zgodne z msTestV2. Te typy projektów zostały przestarzałe. Przeczytaj więcej na temat wycofywania kodowanego testu interfejsu użytkownika i wycofywania testu obciążeniowego sieci Web.

Csproj w stylu zestawu SDK (.NET Core i .NET 5 lub nowszy)

Jeśli twój plik csproj jest nowszym plikiem .csproj w stylu zestawu SDK, najprawdopodobniej używasz już msTestV2. Pakiety NuGet dla msTestV2 i karty MSTestV2 można znaleźć w narzędziu NuGet.

Przykład:

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

Dlaczego warto przeprowadzić uaktualnienie do msTestV2?

W 2016 r. opublikowaliśmy kolejny krok w rozwoju platformy MSTest za pomocą msTestV2. Więcej informacji na temat tej zmiany można przeczytać we wpisie w blogu z ogłoszeniem.

  • MsTestV2 jest łatwiej uzyskiwany i aktualizowany, ponieważ jest dostarczany jako pakiet NuGet.

  • MSTestV2 to open source.

  • Jednolita obsługa platformy aplikacji — MSTestV2 to konwergentna implementacja, która oferuje jednolitą obsługę platformy aplikacji na platformie .NET Framework, .NET Core, ASP.NET Core i uwP. Dowiedz się więcej.

  • Implementacja jest w pełni międzyplatformowa (Windows, Linux, Mac). Dowiedz się więcej.

  • Program MSTestV2 obsługuje platformę .NET Framework 4.5.0 lub nowszą, platformę .NET Core 1.0 lub nowszą (aplikacje uniwersalne systemu Windows 10 lub nowsze), ASP.NET Core 1.0 i nowsze oraz .NET 5 i nowsze.

  • Zapewnia jednolity mechanizm rozszerzalności pojedynczego użytkownika końcowego. Dowiedz się więcej.

  • Zapewnia jednolitą DataRow obsługę wszystkich projektów testowych opartych na msTest. Dowiedz się więcej.

  • Umożliwia umieszczenie atrybutu TestCategory na poziomie klasy lub zestawu. Dowiedz się więcej.

  • Metody testowania z klas bazowych zdefiniowanych w innym zestawie są teraz odnajdywane i uruchamiane z pochodnej klasy testowej. Ta zmiana powoduje spójne zachowanie z typami klas testów pochodnych. Jeśli to zachowanie nie jest wymagane ze względów zgodności, można je zmienić z powrotem przy użyciu następujących ustawień uruchamiania:

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Zapewnia bardziej szczegółową kontrolę nad wykonywaniem równoległym za pomocą równoległego wykonywania testów w zestawie. Ta funkcja umożliwia równoległe uruchamianie testów w zestawie.

  • Metoda TestCleanup na obiekcie TestClass jest wywoływana nawet wtedy, gdy odpowiednia TestInitialize metoda zakończy się niepowodzeniem. Szczegóły problemu.

  • Czas potrzebny AssemblyInitialize i ClassInitialize nie jest liczone do czasu trwania testu. Ta zmiana ogranicza ich wpływ na przekroczenie limitu czasu testu.

  • Testy, które nie można uruchomić, można skonfigurować tak, aby były oznaczone jako nieudane za pośrednictwem tagu MapNotRunnableToFailed , który jest częścią węzła adaptera .runsettings w pliku.

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

Funkcje MSTestV1, które nie są obsługiwane w msTestV2

  • Nie można uwzględnić testów w "uporządkowanym teście".
  • Zmiany w .testsettings pliku:
    • Nie można już używać do konfigurowania karty.
    • Nie obsługuje <LegacySettings> już sekcji, co oznacza, że nie można jej używać do ustawiania atrybutów. Na przykład DeploymentItem. Użyj nowego pliku .runsettings na potrzeby konfiguracji przebiegu testowego.
  • Karta nie obsługuje list testowych określonych jako plik vsmdi .
  • Typy "Projekt kodowanego testu interfejsu użytkownika" i "Projekt testu wydajności i obciążenia sieci Web" nie są obsługiwane. Przeczytaj więcej na temat wycofywania kodowanego testu interfejsu użytkownika i wycofywania testu obciążeniowego sieci Web.
  • Skojarzenie z elementem testowym w programie TFS nie jest obsługiwane.