Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
MSTest, Microsoft Testing Framework, adalah kerangka kerja pengujian untuk aplikasi .NET. Ini memungkinkan Anda untuk menulis dan menjalankan pengujian, dan menyediakan suite pengujian dengan integrasi ke Visual Studio dan Visual Studio Code Test Explorers, .NET CLI, dan banyak alur CI.
MSTest adalah kerangka kerja pengujian sumber terbuka dan lintas platform yang didukung penuh yang berfungsi dengan semua target .NET yang didukung (.NET Framework, .NET Core, .NET, UWP, WinUI, dan sebagainya) yang dihosting di GitHub.
Pengaturan Jalankan
File .runsettings dapat digunakan untuk mengonfigurasi bagaimana pengujian unit dijalankan. Untuk mempelajari lebih lanjut tentang runsettings dan konfigurasi yang terkait dengan platform, Anda dapat memeriksa dokumentasi runsettings VSTest atau dokumentasi runsettings MSTest runner.
Elemen MSTest
Entri runsetting berikut memungkinkan Anda mengonfigurasi bagaimana MSTest berperilaku.
| Konfigurasi | Bawaan | Nilai |
|---|---|---|
| AssemblyCleanupTimeout | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode pembersihan perakitan.
[Timeout] atribut yang ditentukan dalam metode pembersihan assembly menggantikan batas waktu global. |
| AssemblyInitializeTimeout | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi perakitan.
[Timeout] atribut yang ditentukan pada metode inisialisasi assembly menggantikan batas waktu global. |
| AssemblyResolution | salah | Anda dapat menentukan jalur untuk rakitan tambahan saat menemukan dan menjalankan pengujian unit. Misalnya, gunakan jalur ini untuk rakitan dependensi yang tidak berada di direktori yang sama dengan rakitan pengujian. Untuk menentukan jalur, gunakan elemen Jalur Direktori. Jalur dapat menyertakan variabel lingkungan.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>Fitur ini hanya diterapkan saat menggunakan target .NET Framework. |
| CaptureTraceOutput | benar | Ambil pesan teks yang berasal dari API Console.Write*, Trace.Write*, dan Debug.Write* yang akan terkait dengan pengujian yang sedang berlangsung. |
| ClassCleanupLifecycle | EndOfClass | Jika Anda ingin pembersihan kelas terjadi di akhir perakitan, atur menjadi EndOfAssembly. (Tidak lagi didukung mulai dari MSTest v4 karena EndOfClass adalah default dan satu-satunya perilaku ClassCleanup) |
| Batas Waktu Pembersihan Kelas | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode pembersihan kelas.
[Timeout] atribut yang ditentukan pada metode pembersihan kelas menggantikan batas waktu global. |
| ClassInitializeTimeout | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi kelas.
[Timeout] atribut yang ditentukan pada metode inisialisasi kelas menggantikan batas waktu global. |
| PertimbangkanFixturesSebagaiTesKhusus | salah | Untuk menampilkan AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup sebagai entri individual di Visual Studio dan Visual Studio Code Test Explorer dan .trx log, atur nilai ini ke true |
| HapusDirektoriPenyebaranSetelahPengujianSelesai | benar | Untuk mempertahankan direktori penyebaran setelah uji coba, atur nilai ini ke false. |
| PemutaranAktif | benar | Jika Anda mengatur nilai ke false, item penyebaran yang Anda tentukan dalam metode pengujian Anda tidak disalin ke direktori penyebaran. |
| DeployTestSourceDependencies | benar | Nilai yang menunjukkan apakah referensi sumber pengujian akan disebarkan. |
| AktifkanMetodeUjiKelasDasarDariMajelisLain | benar | Nilai yang menunjukkan apakah akan mengaktifkan penemuan metode pengujian dari kelas dasar dalam rakitan yang berbeda dengan kelas pengujian yang mewarisi. |
| ForcedLegacyMode | salah | Dalam versi Visual Studio yang lebih lama, adaptor MSTest dioptimalkan untuk membuatnya lebih cepat dan lebih dapat diskalakan. Beberapa perilaku, seperti urutan pengujian yang dijalankan, mungkin tidak persis seperti pada edisi Visual Studio sebelumnya. Atur nilai ke true untuk menggunakan adaptor pengujian yang lebih lama. Misalnya, Anda dapat menggunakan pengaturan ini jika Anda memiliki file app.config yang ditentukan untuk pengujian unit. Kami menyarankan Anda mempertimbangkan untuk memfaktorkan ulang pengujian Anda agar dapat mengizinkan Anda menggunakan adapter yang lebih baru. |
| PetaTidakTentuMenjadiGagal | salah | Jika pengujian selesai dengan status tidak pasti, pengujian akan diubah menjadi status dilewati di Test Explorer. Jika Anda ingin pengujian yang tidak meyakinkan ditampilkan sebagai gagal, atur nilainya ke true. |
| PetaTidakDapatDijalankanMenjadiGagal | benar | Nilai yang menunjukkan apakah hasil yang tidak dapat dijalankan dipetakan sebagai pengujian yang gagal. |
| UrutkanTesBerdasarkanNamaDiKelas | salah | Jika Anda ingin menjalankan pengujian dengan nama pengujian baik di Test Explorers maupun pada baris perintah, atur nilai ini ke true. |
| Memparalelkan | Digunakan untuk mengatur pengaturan paralelisasi: Pekerja: Jumlah utas/pekerja yang akan digunakan untuk paralelisasi, yang secara default adalah jumlah prosesor pada komputer saat ini. CAKUPAN: Ruang lingkup paralelisasi. Anda dapat mengaturnya ke MethodLevel. Secara default, itu classLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
| PengaturanFile | Anda dapat menentukan file pengaturan pengujian untuk digunakan dengan adapter MSTest di sini. Anda juga dapat menentukan file pengaturan pengujian dari menu pengaturan. Jika Anda menetapkan nilai ini, Anda juga harus mengatur ForcedLegacyMode ke true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
| TestCleanupTimeout | 0 | Tentukan batas waktu secara global untuk setiap instance metode pembersihan pengujian.
[Timeout] atribut yang ditentukan pada metode pembersihan pengujian menggantikan batas waktu global. |
| TestInitializeTimeout | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi pengujian.
[Timeout] atribut yang ditentukan pada metode inisialisasi pengujian menggantikan batas waktu global. |
| TestTimeout | 0 | Mendapatkan waktu batas untuk kasus pengujian global yang ditentukan. |
| PerlakukanPeringatanPembersihanKelasDanMajelisSebagaiKesalahan | salah | Untuk melihat kegagalan Anda dalam pembersihan kelas sebagai kesalahan, atur nilai ini ke true. |
| PerlakukanPeringatanPenemuanSebagaiKesalahan | salah | Untuk melaporkan peringatan penemuan pengujian sebagai kesalahan, atur nilai ini ke true. |
TestRunParameter elemen
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Parameter uji coba menyediakan cara untuk menentukan variabel dan nilai yang tersedia untuk pengujian pada runtime. Akses parameter menggunakan properti MSTest TestContext.Properties :
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Untuk menggunakan parameter uji coba, tambahkan properti TestContext publik ke kelas pengujian Anda.
Contoh file .runsettings
XML berikut menunjukkan konten file .runsettings biasa. Salin kode ini dan edit sesuai kebutuhan Anda.
Setiap elemen file bersifat opsional karena memiliki nilai default.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
testconfig.json
Saat menjalankan pengujian dengan MSTest, Anda dapat menggunakan file testconfig.json untuk mengonfigurasi perilaku runner pengujian. File testconfig.json adalah file JSON yang berisi pengaturan konfigurasi untuk runner pengujian. File digunakan untuk mengonfigurasi pengelola pengujian dan lingkungan eksekusi pengujian. Untuk informasi selengkapnya, lihat dokumentasi Microsoft.Testing.Platform testconfig.json.
Dimulai dengan MSTest 3.7, Anda juga dapat mengonfigurasi eksekusi MSTest dalam file konfigurasi yang sama. Bagian berikut ini menjelaskan pengaturan yang bisa Anda gunakan dalam file testconfig.json.
Elemen MSTest
Pengaturan MSTest dikelompokkan menurut fungsionalitas yang dijelaskan di bagian berikut.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| urutkanTesBerdasarkanNamaDiKelas | salah | Jika Anda ingin menjalankan pengujian dengan nama pengujian baik di Test Explorers maupun pada baris perintah, atur nilai ini ke true. |
| aktifkanMetodeTesKelasDasarDariMajelisLain | benar | Nilai yang menunjukkan apakah akan mengaktifkan penemuan metode pengujian dari kelas dasar dalam rakitan yang berbeda dengan kelas pengujian yang mewarisi. |
| classCleanupLifecycle | EndOfAssembly | Jika Anda ingin pembersihan kelas terjadi di akhir kelas, atur ke EndOfClass. |
Pengaturan assemblyResolution
Semua pengaturan di bagian ini termasuk dalam elemen assemblyResolution.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| Jalur | Tidak | Anda dapat menentukan jalur untuk rakitan tambahan saat menemukan dan menjalankan pengujian unit. Misalnya, gunakan jalur ini untuk rakitan dependensi yang tidak berada di direktori yang sama dengan rakitan pengujian. Anda dapat menentukan jalur dalam bentuk { "path": "...", "includeSubDirectories": "true/false" }. |
Contoh:
{
"mstest": {
"assemblyResolution": {
{ "path": "...", "includeSubDirectories": "true/false" }
}
}
}
Pengaturan deployment
Semua pengaturan di bagian ini termasuk dalam elemen deployment.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| hapusDirektoriPenempatanSetelahPengujianSelesai | benar | Untuk mempertahankan direktori penyebaran setelah uji coba, atur nilai ini ke false. |
| deployTestSourceDependencies | benar | Menunjukkan apakah referensi sumber pengujian akan disebarkan. |
| Diaktifkan | benar | Jika Anda mengatur nilai ke false, item penyebaran yang Anda tentukan dalam metode pengujian Anda tidak disalin ke direktori penyebaran. |
Contoh:
{
"mstest": {
"deployment": {
"deleteDeploymentDirectoryAfterTestRunIsComplete": true,
"deployTestSourceDependencies": true,
"enabled": true
}
}
}
Pengaturan output
Semua pengaturan di bagian ini termasuk dalam elemen output.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| captureTrace | benar | Ambil pesan teks yang berasal dari API Console.Write*, Trace.Write*, dan Debug.Write* yang akan terkait dengan pengujian yang sedang berlangsung. |
Contoh:
{
"mstest": {
"output": {
"captureTrace": false
}
}
}
Pengaturan parallelism
Semua pengaturan di bagian ini termasuk dalam elemen parallelism.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| Diaktifkan | salah | Aktifkan paralelisasi pengujian. |
| cakupan | kelas | Cakupan paralelisasi. Anda dapat mengaturnya ke method. Pengaturan bawaan, class, sesuai dengan menjalankan semua pengujian dari kelas tertentu secara berturutan, tetapi beberapa kelas secara paralel. |
| Pekerja | 0 | Jumlah utas/pekerja yang akan digunakan untuk pemrosesan paralel. Nilai default mengacu pada jumlah prosesor pada komputer saat ini. |
Contoh:
{
"mstest": {
"parallelism": {
"enabled": true,
"scope": "method",
"workers": 32
}
}
}
Pengaturan execution
Semua pengaturan di bagian ini termasuk dalam elemen execution.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| anggapSumberDataKosongSebagaiInkonklusif | salah | Saat diatur ke true, sumber data kosong dianggap tidak meyakinkan. |
| anggapFiturSebagaiTesKhusus | salah | Untuk menampilkan AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup sebagai entri individual di Visual Studio dan Visual Studio Code Test Explorer dan log .trx, atur nilai ini ke true. |
| mapTidakKonklusifKeGagal | salah | Jika pengujian selesai dengan status tidak pasti, pengujian akan diubah menjadi status dilewati di Test Explorer. Jika Anda ingin pengujian yang tidak meyakinkan ditampilkan sebagai gagal, atur nilainya ke true. |
| petakanTidakDapatDijalankanMenjadiGagal | benar | Nilai yang menunjukkan apakah hasil yang tidak dapat dijalankan dipetakan sebagai pengujian yang gagal. |
| Perlakukan Peringatan Pembersihan Kelas Dan Majelis Sebagai Kesalahan | salah | Untuk melihat kegagalan Anda dalam pembersihan kelas sebagai kesalahan, atur nilai ini ke true. |
| PerlakukanPeringatanDeteksiSebagaiKesalahan | salah | Untuk melaporkan peringatan penemuan pengujian sebagai kesalahan, atur nilai ini ke true. |
Contoh:
{
"mstest": {
"execution": {
"considerEmptyDataSourceAsInconclusive": false,
"considerFixturesAsSpecialTests": false,
"mapInconclusiveToFailed": true,
"mapNotRunnableToFailed": true,
"treatClassAndAssemblyCleanupWarningsAsErrors": false,
"treatDiscoveryWarningsAsErrors": false
}
}
}
Pengaturan timeout
Semua pengaturan di bagian ini termasuk dalam elemen timeout.
| Entri | Bawaan | Deskripsi |
|---|---|---|
| assemblyCleanup | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode pembersihan perakitan. |
| inisialisasi perakitan | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi perakitan. |
| classCleanup | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode pembersihan kelas. |
| classInitialize | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi kelas. |
| ujian | 0 | Tentukan batas waktu pengujian secara global. |
| testCleanup | 0 | Tentukan batas waktu secara global untuk setiap instance metode pembersihan pengujian. |
| inisialisasi pengujian | 0 | Tentukan secara global batas waktu untuk diterapkan pada setiap instans metode inisialisasi pengujian. |
| gunakanPembatalanKooperatif | salah | Ketika diatur ke true, jika batas waktu habis, MSTest hanya akan memicu pembatalan CancellationToken tetapi tidak akan berhenti memantau metode. Perilaku ini lebih berkinerja tetapi bergantung pada pengguna untuk mengalirkan token dengan benar melalui semua jalur. |
Nota
[Timeout] atribut yang ditetapkan pada sebuah metode akan menggantikan batas waktu global. Misalnya, [Timeout(1000)] pada metode yang ditandai dengan [AssemblyCleanup] akan menggantikan batas waktu assemblyCleanup global.
Contoh:
{
"mstest": {
"timeout": {
"assemblyCleanup": 0,
"assemblyInitialize": 0,
"classCleanup": 0,
"classInitialize": 0,
"test": 0,
"testCleanup": 0,
"testInitialize": 0,
"useCooperativeCancellation": false
}
}
}
Contoh file testconfig.json
JSON berikut menunjukkan konten file .testconfig.json umum. Salin kode ini dan edit sesuai kebutuhan Anda.
Setiap elemen file bersifat opsional karena memiliki nilai default.
{
"platformOptions": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}