Bagikan melalui


Gambaran umum MSTest SDK

MSTest.Sdk adalah proyek MSBuild SDK untuk membangun aplikasi MSTest. Dimungkinkan untuk membangun aplikasi MSTest tanpa SDK ini, namun, MSTest SDK adalah:

  • Disesuaikan untuk memberikan pengalaman kelas satu untuk pengujian dengan MSTest.
  • Target yang direkomendasikan untuk sebagian besar pengguna.
  • Mudah dikonfigurasi untuk pengguna lain.

MSTest SDK menemukan dan menjalankan pengujian Anda menggunakan runner MSTest.

Anda dapat mengaktifkan MSTest.Sdk dalam proyek hanya dengan memperbarui Sdk atribut simpul Project proyek Anda:

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

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

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

</Project>

Catatan

/3.6.3 diberikan sebagai contoh dan dapat diganti dengan versi yang lebih baru.

Untuk menyederhanakan penanganan versi, sebaiknya atur versi SDK di tingkat solusi menggunakan file global.json . Misalnya, file proyek Anda akan terlihat seperti:

<Project Sdk="MSTest.Sdk">

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

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

</Project>

Kemudian, tentukan MSTest.Sdk versi dalam file global.json sebagai berikut:

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

Untuk informasi selengkapnya, lihat Menggunakan SDK proyek MSBuild.

Ketika Anda build proyek tersebut, semua komponen yang diperlukan akan dipulihkan dan diinstal menggunakan alur kerja NuGet standar yang ditetapkan oleh proyek Anda.

Anda tidak memerlukan hal lain untuk membangun dan menjalankan pengujian dan Anda dapat menggunakan alat yang sama (misalnya, dotnet test atau Visual Studio) yang digunakan oleh proyek MSTest "klasik".

Penting

Dengan beralih ke MSTest.Sdk, Anda memilih untuk menggunakan runner MSTest, termasuk dengan dotnet test. Itu mengharuskan memodifikasi panggilan CI dan CLI lokal Anda, dan juga berdampak pada entri yang tersedia dari .runsettings. Anda dapat menggunakan MSTest.Sdk dan tetap mempertahankan integrasi serta alat lama dengan mengalihkan runner.

Pilih pelari

Secara bawaan, MSTest SDK mengandalkan runner MSTest, tetapi Anda dapat beralih ke VSTest dengan menambahkan properti <UseVSTest>true</UseVSTest>.

Perluas penggerak MSTest

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

Profil pelaksana MSTest

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 lengkapnya, menggunakan None profil:

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

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

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

</Project>
Ekstensi/Profil Tidak Bawaan AllMicrosoft
Cakupan Kode ✔️ ✔️
Crash Dump ✔️
Palsu ✔️ (MSTest.Sdk 3.7.0+)
Gantung Pembuangan ✔️
Muat Ulang Cepat ✔️
Coba Lagi ✔️
Trx ✔️ ✔️

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

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

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

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

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

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

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

.NET Aspire adalah rangkaian yang berpendirian kuat, siap digunakan di cloud, untuk membangun aplikasi terdistribusi yang dapat diamati dan siap produksi. .NET Aspire dikirimkan melalui kumpulan paket NuGet yang menangani masalah cloud-native tertentu. Untuk informasi selengkapnya, lihat dokumen .NET 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/3.4.0">

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

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

</Project>

Uji dengan 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/3.4.0">

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

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

</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 ke global.json:

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

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 MSTest runner (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.

Berikut adalah contoh pembaruan saat menggunakan DotNetCoreCLI tugas di Azure DevOps:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--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. Untuk detail lebih lanjut, lihat masalah ini: NuGet#13127.

Catatan

Batasan ini tidak khusus untuk MSTest SDK tetapi untuk MSBuild SDK yang disediakan NuGet. Dependabot akan menangani pembaruan versi dalam file global.json, tetapi Anda harus memperbarui versi secara manual dalam file proyek.

Lihat juga