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.
Gunakan kelas dari namespace Microsoft.VisualStudio.TestTools.UnitTesting untuk memverifikasi fungsionalitas tertentu. Metode pengujian menjalankan kode dalam aplikasi Anda tetapi melaporkan kebenaran hanya saat Anda menyertakan Assert pernyataan.
Gambaran Umum
MSTest menyediakan tiga kelas pernyataan:
| Class | Tujuan |
|---|---|
Assert |
Pernyataan tujuan umum untuk nilai, jenis, dan pengecualian. |
StringAssert |
Pernyataan khusus string untuk pola, substring, dan perbandingan. |
CollectionAssert |
Pernyataan pengumpulan untuk membandingkan dan memvalidasi koleksi. |
Petunjuk / Saran
Ketika fungsionalitas ada di Assert dan StringAssert/CollectionAssert, lebih pilih kelas Assert. Kelas ini Assert memberikan kemudahan penemuan yang lebih baik dan merupakan pilihan yang direkomendasikan untuk kode baru.
StringAssert dan CollectionAssert dipertahankan untuk kompatibilitas ke belakang.
Semua metode pernyataan menerima parameter pesan opsional yang ditampilkan saat pernyataan gagal, membantu Anda mengidentifikasi penyebabnya:
Assert.AreEqual(expected, actual, "Values should match after processing");
Kelas Assert
Assert Gunakan kelas untuk memverifikasi bahwa kode yang sedang diuji berulah seperti yang diharapkan.
Metode pernyataan umum
[TestMethod]
public async Task AssertExamples()
{
// Equality
Assert.AreEqual(5, calculator.Add(2, 3));
Assert.AreNotEqual(0, result);
// Reference equality
Assert.AreSame(expected, actual);
Assert.AreNotSame(obj1, obj2);
// Boolean conditions
Assert.IsTrue(result > 0);
Assert.IsFalse(string.IsNullOrEmpty(name));
// Null checks
Assert.IsNull(optionalValue);
Assert.IsNotNull(requiredValue);
// Type checks
Assert.IsInstanceOfType<IDisposable>(obj);
Assert.IsNotInstanceOfType<string>(obj);
// Exception testing (MSTest v3.8+)
Assert.ThrowsExactly<ArgumentNullException>(() => service.Process(null!));
await Assert.ThrowsExactlyAsync<InvalidOperationException>(
async () => await service.ProcessAsync());
}
API yang Tersedia
- Assert.AreEqual
- Assert.AreNotEqual
- Assert.AreNotSame
- Assert.AreSame
- Assert.Contains
- Assert.ContainsSingle
- Assert.DoesNotContain
- Assert.DoesNotEndWith
- Assert.DoesNotMatchRegex
- Assert.DoesNotStartWith
- Assert.Fail
- Assert.HasCount
- Assert.Inconclusive
- Assert.IsEmpty
- Assert.IsFalse
- Assert.IsGreaterThan
- Assert.IsGreaterThanOrEqualTo
- Assert.IsInRange
- Assert.IsInstanceOfType
- Assert.IsLessThan
- Assert.IsLessThanOrEqualTo
- Assert.IsNegative
- Assert.IsNotEmpty
- Assert.IsNotInstanceOfType
- Assert.IsNotNull
- Assert.IsNull
- Assert.IsPositive
- Assert.IsTrue
- Assert.MatchesRegex
- Assert.StartsWith
- Assert.Throws
- Assert.ThrowsAsync
- Assert.ThrowsExactly
- Assert.ThrowsExactlyAsync
Kelas StringAssert
StringAssertGunakan kelas untuk membandingkan dan memeriksa string.
Nota
Semua metode StringAssert memiliki padanan dalam kelas Assert. Lebih dianjurkan untuk menggunakan metode Assert untuk meningkatkan keterjangkauan. Kelas StringAssert dipertahankan untuk kompatibilitas mundur.
API yang tersedia adalah:
- StringAssert.Contains
- StringAssert.DoesNotMatch
- StringAssert.EndsWith
- StringAssert.Matches
- StringAssert.StartsWith
Kelas CollectionAssert
CollectionAssertGunakan kelas untuk membandingkan koleksi objek, atau untuk memverifikasi status koleksi.
Nota
Ketika metode yang setara ada di Assert kelas (seperti Assert.Contains, ), Assert.DoesNotContainlebih suka menggunakan Assert untuk penemuan yang lebih baik. Kelas CollectionAssert dipertahankan terutama untuk kompatibilitas mundur.
API yang tersedia adalah:
- CollectionAssert.AllItemsAreInstancesOfType
- CollectionAssert.AllItemsAreNotNull
- CollectionAssert.AllItemsAreUnique
- CollectionAssert.AreEqual
- CollectionAssert.AreEquivalent
- CollectionAssert.AreNotEqual
- CollectionAssert.AreNotEquivalent
- CollectionAssert.Contains
- CollectionAssert.DoesNotContain
- CollectionAssert.IsNotSubsetOf
- CollectionAssert.IsSubsetOf
Praktik terbaik
Gunakan pernyataan tertentu: Lebih disukai
AreEqualuntuk memberikanIsTrue(a == b)pesan kegagalan yang lebih baik.Menyertakan pesan deskriptif: Membantu mengidentifikasi kegagalan dengan cepat dengan pesan pernyataan yang jelas.
Uji satu per satu: Setiap metode pengujian harus memverifikasi satu perilaku.
Menggunakan
Throws/ThrowsExactlyuntuk pengecualian: Di MSTest v3.8+, lebih sukaAssert.Throws,Assert.ThrowsExactly, dan mitra asinkron mereka (ThrowsAsync,ThrowsExactlyAsync) daripadaExpectedExceptionatribut .Lebih disukai
AssertdibandingkanStringAssert/CollectionAssert: Ketika fungsionalitas ada di kedua kelas, gunakan kelasAssertuntuk kemudahan ditemukan dan agar lebih konsisten.
Penganalisis terkait
Penganalisis berikut membantu memastikan penggunaan pernyataan yang tepat:
-
MSTEST0006 - Hindari
ExpectedExceptionatribut, gunakanAssert.Throwsmetode sebagai gantinya. - MSTEST0017 - Argumen pernyataan harus diteruskan dalam urutan yang benar.
- MSTEST0023 - Jangan meniadakan pernyataan boolean.
-
MSTEST0025 - Lebih suka
Assert.Faildaripada kondisi yang selalu salah. - MSTEST0026 - Argumen pernyataan harus menghindari akses bersyarat.
- MSTEST0032 - Tinjau kondisi pernyataan yang selalu benar.
- MSTEST0037 - Gunakan metode pernyataan yang tepat.
-
MSTEST0038 - Hindari
Assert.AreSamedengan tipe nilai. -
MSTEST0039 - Gunakan metode yang lebih
Assert.Throwsbaru. - MSTEST0040 - Hindari menggunakan assert dalam konteks async void.
-
MSTEST0046 - Gunakan
Assertalih-alihStringAssert. -
-
Assert.ThrowsMSTEST0051 harus berisi satu pernyataan. -
MSTEST0053 - Hindari
Assertparameter format. - MSTEST0058 - Hindari penggunaan 'assert' dalam blok tangkapan.