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:
None
- Tidak ada ekstensi yang diaktifkan.Default
- Mengaktifkan ekstensi yang direkomendasikan untuk versi MSTest.SDK ini. Ini adalah default ketika properti tidak diatur secara eksplisit.Mengaktifkan ekstensi berikut:
AllMicrosoft
- Aktifkan semua ekstensi yang dikirim oleh Microsoft (termasuk ekstensi dengan lisensi terbatas).Mengaktifkan ekstensi berikut:
Fakes (MSTest.Sdk 3.7.0+)
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.