MSTest SDK'ya genel bakış

.NET 9'da kullanıma sunulan 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.

MSTest SDK'sı, MSTest çalıştırıcısını kullanarak testlerinizi bulur ve çalıştırır.

Projenizin düğümünün özniteliğini güncelleştirerek Sdk bir projede Project etkinleştirebilirsinizMSTest.Sdk:

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

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

    <!-- references to the code to test -->

</Project>

Not

/3.3.1 , SDK'nın ilk sürümü olduğu gibi örnek olarak verilir, ancak 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>

    <!-- references to the code to test -->

</Project>

Ardından, global.json dosyasındaki sürümü aşağıdaki gibi belirtinMSTest.Sdk:

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

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

Projeyi yaptığınızda build , projeniz tarafından ayarlanan standart NuGet iş akışı kullanılarak gerekli tüm bileşenler geri yüklenir ve yüklenir.

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

Önemli

öğesine geçerekMSTest.Sdk, dotnet testi de dahil olmak üzere MSTest çalıştırıcısını kullanmayı kabul edebilirsiniz. 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ı değiştirmek yerine eski tümleştirmeleri ve araçları kullanabilir MSTest.Sdk ve kullanmaya devam edebilirsiniz.

Çalıştırıcıyı seçin

Varsayılan olarak, MSTest SDK'sı MSTest çalıştırıcısına dayanır, ancak özelliğini <UseVSTest>true</UseVSTest>ekleyerek VSTest'e geçebilirsiniz.

MSTest çalıştırıcıyı genişletme

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

MSTest çalıştırıcı profili

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

Aşağıdaki üç profilden biriyle özelliğini TestingExtensionsProfile kullanarak profili ayarlayabilirsiniz:

  • Default - MSTest.SDK'nın bu sürümü için önerilen uzantıları etkinleştirir. Özellik açıkça ayarlı olmadığında bu varsayılan değerdir.
  • None - Hiçbir uzantı etkinleştirilmedi.
  • AllMicrosoft - Microsoft tarafından gönderilen tüm uzantıları etkinleştirin (kısıtlayıcı lisansa sahip uzantılar dahil).

Aşağıda profilin kullanıldığı tam bir örnek verilmişti None :

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

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

    <!-- references to the code to test -->

</Project>

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), olarak ayarlanan trueaşağıdaki özelliği EnableMicrosoftTestingExtensionsCrashDump kullanabilirsiniz:

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

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

<!-- references to the code to test -->

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

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

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

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

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

    <!-- references to the code to test -->

</Project>

Özellikler

Çalıştırıcıya ve çalıştırıcıya özgü uzantıların seçiminin dışında, MSTest.Sdk test deneyiminizi basitleştirmek ve geliştirmek için ek özellikler de sağlar.

.NET Aspire ile test

.NET Aspire, gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmaya yönelik, öngörülebilir, buluta hazır bir yığındır. .NET Aspire, buluta özel belirli endişeleri gideren bir NuGet paketleri koleksiyonu aracılığıyla sunulur. Daha fazla bilgi için bkz . .NET Aspire belgeleri.

Not

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

özelliğini EnableAspireTesting olarak trueayarlayarak ve MSTestile Aspire test etmek için ihtiyacınız olan tüm bağımlılıkları ve varsayılan using yönergeleri getirebilirsiniz.

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

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

    <!-- references to the code to test -->

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

Not

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

özelliğini EnablePlaywright olarak ayarlayarak ve MSTestile Playwright test etmek true için ihtiyacınız olan tüm bağımlılıkları ve varsayılan using yönergeleri getirebilirsiniz.

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

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

    <!-- references to the code to test -->

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

sürümüne global.jsonekleyin:

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

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 başvuruları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üncelleştirdikten sonra (varsayılan) kullanıyorsanız MSTest runner ve testlerinizi çalıştırmaya güveniyorsanız dotnet test CI yapılandırmanızı güncelleştirmeniz gerekir. Daha fazla bilgi edinmek ve gerekli tüm değişiklikleri anlamanıza yol göstermek için bkz . dotnet test tümleştirmesi.

Azure DevOps'ta görevi kullanırken örnek DotNetCoreCLI bir güncelleştirme aşağıda verilmiştir:

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

Ayrıca bkz.