Bagikan melalui


Konfigurasi MSTest SDK

Artikel ini membahas opsi konfigurasi tingkat lanjut untuk MSTest.Sdk. Untuk penyiapan dasar dan memulai, lihat Mulai menggunakan MSTest.

Penting

Secara bawaan, MSTest.Sdk menggunakan runner MSTest dengan Microsoft.Testing.Platform, termasuk dengan dotnet test. Ini memerlukan modifikasi panggilan CI dan CLI lokal Anda, dan juga berdampak pada entri yang tersedia dari .runsettings. Anda dapat menyimpan integrasi dan alat lama dengan beralih ke VSTest.

MSTest.Sdk mengatur EnableMSTestRunner dan TestingPlatformDotnetTestSupport ke true secara default. Untuk informasi selengkapnya tentang pengujian dotnet dan modenya yang berbeda, lihat Pengujian dengan pengujian dotnet.

Menguji perpustakaan bantu utilitas

Jika proyek yang menggunakan MSTest.Sdk dimaksudkan untuk menjadi pustaka pembantu utilitas pengujian, dan tidak dengan sendirinya berisi pengujian yang dapat dijalankan, proyek harus memiliki <IsTestApplication>false</IsTestApplication>.

Pilih pelari

Secara default, MSTest SDK mengandalkan Microsoft.Testing.Platform, tetapi Anda dapat beralih ke VSTest dengan menambahkan properti <UseVSTest>true</UseVSTest>.

Perluas Microsoft.Testing.Platform

Anda dapat menyesuaikan pengalaman Microsoft.Testing.Platform melalui rangkaian ekstensi paket NuGet. Untuk menyederhanakan dan meningkatkan pengalaman ini, MSTest SDK memperkenalkan dua fitur:

Profil Microsoft.Testing.Platform

Konsep profil memungkinkan Anda memilih kumpulan konfigurasi dan ekstensi default yang akan diterapkan ke proyek pengujian Anda.

Anda dapat mengatur profil menggunakan properti TestingExtensionsProfile dengan salah satu dari tiga profil berikut:

Berikut adalah contoh lengkap menggunakan profil None.

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

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

</Project>
Ekstensi/Profil Tidak Bawaan AllMicrosoft
Cakupan Kode ✔️ ✔️
Jejak Kerusakan ✔️
Palsu ✔️¹
Hang Dump ✔️
Muat Ulang Cepat (Hot Reload) ✔️
Coba Lagi ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

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

Mengaktifkan atau menonaktifkan ekstensi

Ekstensi dapat diaktifkan dan dinonaktifkan oleh properti MSBuild dengan pola Enable[NugetPackageNameWithoutDots].

Misalnya, untuk mengaktifkan ekstensi crash dump (paket NuGet Microsoft.Testing.Extensions.CrashDump), Anda dapat menggunakan properti EnableMicrosoftTestingExtensionsCrashDump berikut yang diatur ke true:

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

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

</Project>

Untuk daftar semua ekstensi yang tersedia, lihat Ekstensi Microsoft.Testing.Platform.

Peringatan

Penting untuk meninjau persyaratan lisensi untuk setiap ekstensi karena mungkin berbeda.

Ekstensi yang diaktifkan dan dinonaktifkan dikombinasikan dengan ekstensi yang disediakan oleh profil ekstensi yang Anda pilih.

Pola properti ini dapat digunakan untuk mengaktifkan ekstensi tambahan di atas profil implisit Default (seperti yang terlihat dalam contoh CrashDumpExtension sebelumnya).

Anda juga dapat menonaktifkan ekstensi yang berasal dari profil yang dipilih. Misalnya, nonaktifkan MS Code Coverage ekstensi dengan mengatur <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

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

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

</Project>

Fitur

Di luar pemilihan ekstensi runner dan runner-specific, MSTest.Sdk juga menyediakan fitur tambahan untuk menyederhanakan dan meningkatkan pengalaman pengujian Anda.

Uji dengan Aspire

Aspire adalah stack yang berpendapat kuat, siap untuk cloud, untuk membangun aplikasi terdistribusi yang dapat diobservasi dan siap produksi. Aspire dikirimkan melalui kumpulan paket NuGet yang menangani aspek cloud-native tertentu. Untuk informasi selengkapnya, lihat dokumen Aspire.

Catatan

Fitur ini tersedia dari MSTest.Sdk 3.4.0.

Dengan mengatur properti EnableAspireTesting ke true, Anda dapat membawa semua dependensi dan arahan default using yang Anda butuhkan untuk pengujian dengan Aspire dan MSTest.

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

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

</Project>

Pengujian menggunakan Playwright

Playwright memungkinkan pengujian end-to-end yang andal untuk aplikasi web modern. Untuk informasi selengkapnya, lihat dokumentasi Playwright resmi.

Catatan

Fitur ini tersedia dari MSTest.Sdk 3.4.0.

Dengan mengatur properti EnablePlaywright ke true Anda dapat membawa semua dependensi dan arahan default using yang Anda butuhkan untuk pengujian dengan Playwright dan MSTest.

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

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

</Project>

Migrasi ke MSTest SDK

Pertimbangkan langkah-langkah berikut yang diperlukan untuk bermigrasi ke MSTest SDK.

Memperbarui proyek Anda

Saat memigrasikan proyek pengujian MSTest yang ada ke MSTest SDK, mulailah dengan mengganti Sdk="Microsoft.NET.Sdk" entri di bagian atas proyek pengujian Anda dengan Sdk="MSTest.Sdk"

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

Tambahkan versi pada global.json:

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

Anda kemudian dapat mulai menyederhanakan proyek Anda.

Hapus properti default.

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

Hapus referensi paket default:

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

Terakhir, berdasarkan profil ekstensi yang Anda gunakan, Anda juga dapat menghapus beberapa Microsoft.Testing.Extensions.* paket.

Memperbarui CI Anda

Setelah memperbarui proyek, jika Anda menggunakan Microsoft.Testing.Platform (default) dan jika Anda mengandalkan dotnet test untuk menjalankan pengujian, Anda harus memperbarui konfigurasi CI. Untuk informasi selengkapnya dan memandu pemahaman Anda mengenai semua perubahan yang diperlukan, lihat integrasi pengujian dotnet.

Jika Anda menggunakan mode VSTest, dotnet test berikut adalah contoh pembaruan saat menggunakan tugas DotNetCoreCLI di Azure DevOps.

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

Batasan yang diketahui

MSBuild SDK yang disediakan NuGet (termasuk MSTest.Sdk) memiliki dukungan alat terbatas dalam hal memperbarui versinya, yang berarti bahwa pembaruan NuGet biasa dan UI Visual Studio untuk mengelola paket NuGet tidak berfungsi seperti yang diharapkan. Anda harus memperbarui versi secara manual dalam global.json file dan dalam file proyek. (Ini berlaku bahkan jika Anda menggunakan Dependabot karena masalah dependabot-core#12824 dan dependabot-core#8615.)

Lihat juga