Aracılığıyla paylaş


MSTest SDK'ya genel bakış

MSTest.Sdk, MSTest uygulamaları oluşturmaya yönelik bir MSBuild proje SDK'sıdır . Bu SDK olmadan bir MSTest uygulaması derlemek mümkündür, ancak MSTest SDK'sı şu şekildedir:

  • MSTest ile test için birinci sınıf bir deneyim sağlamaya yönelik olarak uyarlanmıştır.
  • Çoğu kullanıcı için önerilen hedef.
  • Diğer kullanıcılar için kolayca yapılandırılabilir.

Varsayılan olarak, MSTest SDK'sı Microsoft.Testing.Platform için MSTest çalıştırıcısını kullanarak testlerinizi bulur ve çalıştırır. VSTest'i belirtip kullanmaya geçebilirsiniz.

Projenizin MSTest.Sdk düğümünün Sdk özniteliğini güncelleyerek bir projede Project etkinleştirebilirsiniz.

<Project Sdk="MSTest.Sdk/3.10.2">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Uyarı

/3.10.2 örnek olarak verilmiştir ve daha yeni bir sürümle değiştirilebilir.

Sürümlerin işlenmesini kolaylaştırmak için global.json dosyasını kullanarak SDK sürümünü çözüm düzeyinde ayarlamanızı öneririz. Örneğin, proje dosyanız şöyle görünür:

<Project Sdk="MSTest.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Ardından, MSTest.Sdk sürümünü global.json dosyasında aşağıdaki gibi belirtin:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Daha fazla bilgi için bkz . MSBuild proje SDK'larını kullanma.

Proje çalıştırıldığında build, projeniz tarafından ayarlanan standart NuGet iş akışı kullanılarak gerekli tüm bileşenler geri yüklenip yüklenir.

Testlerinizi oluşturmak ve çalıştırmak için başka bir şeye ihtiyacınız yok ve "klasik" bir MSTest projesinde kullanılan aynı araçları (örneğin, dotnet test veya Visual Studio ) kullanabilirsiniz.

Önemli

MSTest.Sdk öğesine geçiş yaparak, dotnet testini ile birlikte MSTest çalıştırıcısını (MSTest için Microsoft.Testing.Platform'u etkinleştirir) kullanmayı tercih edersiniz. Bu, CI ve yerel CLI çağrılarınızı değiştirmeyi gerektirir ve ayrıca .runsettings'in kullanılabilir girdilerini etkiler. Çalıştırıcıyı MSTest.Sdk eski tümleştirmeleri ve araçları kullanmaya devam edebilirsiniz. Varsayılan olarak, MSTest.Sdk EnableMSTestRunner ve TestingPlatformDotnetTestSupport değerlerini true olarak ayarlar. Dotnet testi ve Microsoft.Testing.Platform çalıştırmaya yönelik farklı modları hakkında daha fazla bilgi için bkz. Dotnet test ile test etme.

Yardımcı araç kütüphanelerini test etme

MSTest.Sdk kullanan projenin bir test yardımcı programı yardımcı kitaplığı olması amaçlanıyorsa ve tek başına çalıştırılabilir test içermiyorsa, projede olmalıdır <IsTestApplication>false</IsTestApplication>.

Koşucuyu seçin

Varsayılan olarak, MSTest SDK'sı Microsoft.Testing.Platformkullanır, ancak özelliğini ekleyerek <UseVSTest>true</UseVSTest> geçebilirsiniz.

Microsoft.Testing.Platform'u genişletme

Deneyimi bir dizi NuGet paket uzantısı aracılığıyla özelleştirebilirsiniz. Bu deneyimi basitleştirmek ve geliştirmek için MSTest SDK'sı iki özellik sunar:

Microsoft.Testing.Platform profili

Profil kavramı, test projenize uygulanacak varsayılan yapılandırma ve uzantı kümesini seçmenize olanak tanır.

Özelliği TestingExtensionsProfile kullanarak aşağıdaki üç profilden birini seçip profili ayarlayabilirsiniz:

İşte None profilinin kullanıldığı tam bir örnek:

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Eklenti/Profil Hiç kimse Varsayılan AllMicrosoft
Kod Kapsamı ✔️ ✔️
kilitlenme dökümü ✔️
Sahtekarlıklar ✔️¹
Askı Dökümü ✔️
Anında Yeniden Yükleme ✔️
Yeniden Dene ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

Uzantıları etkinleştirme veya devre dışı bırakma

Uzantılar, deseni Enable[NugetPackageNameWithoutDots]ile MSBuild özellikleri tarafından etkinleştirilebilir ve devre dışı bırakılabilir.

Örneğin, kilitlenme bilgi dökümü uzantısını etkinleştirmek için (NuGet paketi Microsoft.Testing.Extensions.CrashDump), aşağıdaki özelliği EnableMicrosoftTestingExtensionsCrashDump şu şekilde ayarlayarak true kullanabilirsiniz:

<Project Sdk="MSTest.Sdk/3.10.2">

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

Kullanılabilir tüm uzantıların listesi için bkz . Microsoft.Testing.Platform uzantıları.

Uyarı

Farklılık gösterebileceğinden her uzantının lisans koşullarını gözden geçirmek önemlidir.

Etkin ve devre dışı bırakılmış uzantılar, seçtiğiniz uzantı profili tarafından sağlanan uzantılarla birleştirilir.

Örtük Default profilinin üzerinde ek bir uzantı etkinleştirmek için bu özellik deseni kullanılabilir (önceki CrashDumpExtension örneğinde görüldüğü gibi).

Seçili profilden gelen bir uzantıyı da devre dışı bırakabilirsiniz. Örneğin, MS Code Coverage uzantısını devre dışı bırakmak için <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage> ayarını yapın.

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Özellikler

Seçilen koşucu ve koşucuya özgü uzantıların ötesinde, MSTest.Sdk test deneyiminizi basitleştirmek ve geliştirmek için ek özellikler de sunar.

Aspire ile test et

Aspire, gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmak için belirli bir yaklaşıma sahip, buluta hazır bir yığındır. Aspire, belirli buluta özgü endişeleri işleyen bir NuGet paketleri koleksiyonu aracılığıyla sunulur. Daha fazla bilgi için aspire belgelerine bakın.

Uyarı

Bu özellik MSTest.Sdk 3.4.0'dan kullanılabilir.

Özelliği EnableAspireTesting olarak true ayarlayarak, using ve Aspire ile test etmek için ihtiyacınız olan tüm bağımlılıkları ve varsayılan MSTest yönergelerini getirebilirsiniz.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Playwright ile test et

Playwright, modern web uygulamaları için güvenilir uçtan uca test olanağı sağlar. Daha fazla bilgi için resmi Playwright belgelerine bakın.

Uyarı

Bu özellik MSTest.Sdk 3.4.0'dan kullanılabilir.

Özelliği EnablePlaywright olarak ayarlayarak, true ile using için gerekli olan tüm bağımlılıkları ve varsayılan Playwright yönergelerini MSTest ile test etmek amacıyla ekleyebilirsiniz.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

MSTest SDK'sına geçiş

MSTest SDK'sına geçiş yapmak için gereken aşağıdaki adımları göz önünde bulundurun.

Projenizi güncelleştirme

Mevcut bir MSTest test projesini MSTest SDK'sına geçirirken, test projenizin en üstündeki girdiyi Sdk="Microsoft.NET.Sdk" ile değiştirerek başlayın Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

global.json sürümünüze ekleyin:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Ardından projenizi basitleştirmeye başlayabilirsiniz.

Varsayılan özellikleri kaldır:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Varsayılan paket atıflarını kaldır.

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Son olarak, kullandığınız uzantı profiline bağlı olarak paketlerden Microsoft.Testing.Extensions.* bazılarını da kaldırabilirsiniz.

CI'nizi güncelleştirme

Projelerinizi güncelledikten sonra, Microsoft.Testing.Platform (varsayılan) kullanıyorsanız ve dotnet test'e güvenerek testlerinizi çalıştırıyorsanız, CI yapılandırmanızı güncellemeniz gerekir. Daha fazla bilgi edinmek ve gerekli tüm değişiklikleri anlamanızı sağlamak için bkz: dotnet test tümleştirmesi.

VSTest modunu dotnet test kullanıyorsanız, Azure DevOps'ta DotNetCoreCLI görevini kullanırken işte örnek bir güncelleştirme:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Bilinen sınırlamalar

NuGet tarafından sağlanan MSBuild SDK'ları (MSTest.Sdk dahil) sürümlerini güncelleştirme konusunda sınırlı araç desteğine sahiptir; yani NuGet paketlerini yönetmek için normal NuGet güncelleştirmesi ve Visual Studio kullanıcı arabirimi beklendiği gibi çalışmaz. Dosyadaki ve proje dosyasındaki global.json sürümü el ile güncelleştirmeniz gerekir. (Dependabot-core#12824 ve dependabot-core#8615 sorunları nedeniyle Dependabot kullanıyor olsanız bile bu durum geçerlidir.)

Ayrıca bkz.