Aracılığıyla paylaş


MSTestV1'den MSTestV2'ye yükseltme

.csproj dosyasında başvurulan MSTest sürümünü MSTestV1'den MSTestV2'ye yeniden hedefleyerek test projenizi yükseltebilirsiniz. MSTestV1'deki tüm özellikler MSTestV2'ye getirilmediğinden, hataları çözmek için bazı değişiklikler gerekebilir. Artık hangi özelliklerin çalışmadığını anlamak için bkz. MSTestV2 desteklenmeyen MSTestV1 özellikleri. Bu özelliklerden bazılarının testlerinizden kaldırılması gerekebilir.

  1. Birim testi projenizden Microsoft.VisualStudio.QualityTools.UnitTestFramework derleme başvurusunu kaldırın.

  2. MSTest.TestFramework ve nuget.org üzerinde MSTest.TestAdapter paketleri de dahil olmak üzere MSTestV2'ye NuGet paket başvuruları ekleyin. NuGet Paket Yöneticisi Konsolu'nda aşağıdaki komutlarla paketleri yükleyebilirsiniz:

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

Eski stil csproj örneği

MSTestV1'i hedefleyen örnek .csproj:

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

Örnek .csproj artık MSTestV2'yi hedefledik:

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

Not

Kodlanmış UI testleri veya Web Yük Testleri olan test projeleri MSTestV2 ile uyumlu değildir. Bu proje türleri kullanım dışı bırakıldı. Kodlanmış UI Testi'nin kullanımdan kaldırılması ve Web Yük Testi'nin kullanımdan kaldırılmasıhakkında daha fazla bilgi edinin.

SDK stili csproj (.NET Core ve .NET 5 veya üzeri)

.csproj daha yeni SDK stili .csproj ise, büyük olasılıkla ZATEN MSTestV2 kullanıyorsunuz demektir. MSTestV2 için NuGet paketlerini ve NuGet'te MSTestV2 Bağdaştırıcısı bulabilirsiniz.

Örnek:

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

Neden MSTestV2'ye Yükseltin?

2016'da, MSTestV2 ile MSTest çerçevesini geliştirmenin bir sonraki adımını yayımladık. Bu değişiklik hakkında daha fazla bilgi için duyuru yazısı blog gönderisi.

  • NuGet Paketiolarak teslim edildiğinden MSTestV2 daha kolay edinilir ve güncelleştirilir.

  • MSTestV2 açık kaynak.

  • Tekdüzen uygulama platformu desteği – MSTestV2 .NET Framework, .NET Core, ASP.NET Core ve UWP genelinde tekdüzen uygulama platformu desteği sunan yakınsanmış bir uygulamadır. daha fazlasını oku.

  • Uygulama tamamen platformlar arasıdır (Windows, Linux, Mac). Detaylı bilgi.

  • MSTestV2; .NET Framework 4.5.0 ve üzeri, .NET Core 1.0 ve üzeri (Evrensel Windows Apps 10+), ASP.NET Core 1.0 ve üzeri ile .NET 5 ve üzerini hedeflemeyi destekler.

  • Tekdüzen, tek bir son kullanıcı genişletilebilirlik mekanizması sağlar. Daha fazlasını oku.

  • Tüm MSTest tabanlı test projeleri için tekdüzen DataRow destek sağlar. daha fazla bilgi okuyun.

  • TestCategory özniteliğinin bir sınıf veya derleme düzeyinde yerleştirilmesini sağlar. Daha fazla oku.

  • Başka bir derlemede tanımlanan temel sınıflardan test yöntemleri şimdi keşfedilir ve türetilmiş Test sınıfından çalıştırılır. Bu değişiklik, türetilmiş test sınıfı türleriyle tutarlı bir davranış getirir. Uyumluluk nedeniyle bu davranış gerekli değilse, aşağıdaki çalıştırma ayarları kullanılarak yeniden değiştirilebilir:

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Testlerin montaj içi paralel yürütme aracılığıyla daha ayrıntılı şekilde kontrol edilmesini sağlar. Bu özellik, testleri bir derleme içinde paralel olarak çalıştırmaya olanak tanır.

  • bir TestClass üzerindeki TestCleanup yöntemi, ilgili TestInitialize yöntemi başarısız olsa bile çağrılır. Sorun detayları.

  • AssemblyInitialize ve ClassInitialize tarafından geçen süre, test süresine göre sayılmaz. Bu değişiklik, test zaman aşımı üzerindeki etkilerini sınırlar.

  • Çalıştırılamayan testler, .runsettings dosyasındaki bağdaştırıcı düğümünün parçası olan MapNotRunnableToFailed etiketi aracılığıyla başarısız olarak işaretlenecek şekilde yapılandırılabilir.

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

MSTestV2'de desteklenmeyen MSTestV1 özellikleri

  • Testler "Sıralı Test"e eklenemez.
  • .testsettings dosyasında yapılan değişiklikler:
    • Bağdaştırıcıyı yapılandırmak için artık kullanılamaz.
    • artık <LegacySettings> bölümünü desteklemez, yani öznitelikleri ayarlamak için kullanamazsınız. Örneğin, DeploymentItem. Test çalıştırması yapılandırması için yeni .runsettings dosyasını kullanın.
  • Bağdaştırıcı, .vsmdi dosyası olarak belirtilen test listelerini desteklemez.
  • "Kodlanmış UI Test Projesi" ve "Web Performansı ve Yük Testi Projesi" türleri desteklenmez. Kodlanmış UI Testinin kaldırılması ve Web Yük Testinin kaldırılmasıhakkında daha fazla bilgi edinin.
  • TFS'de bir testkase öğesiyle ilişkilendirme desteklenmez.