Bagikan melalui


MSTEST0038: Jangan gunakan 'Assert.AreSame' atau 'Assert.AreNotSame' dengan tipe nilai

Harta benda Nilai
ID Aturan MSTEST0038
Judul Jangan gunakan 'Assert.AreSame' atau 'Assert.AreNotSame' dengan jenis nilai
Kategori Penggunaan
Perbaikan dapat berdampak atau tidak berdampak Tidak melanggar
Diaktifkan secara default Ya
tingkat keparahan default Peringatan
Diperkenalkan dalam versi 3.8.0
Apakah ada perbaikan kode Ya

Sebab

Penggunaan Assert.AreSame atau Assert.AreNotSame dengan satu atau kedua argumen menjadi jenis nilai.

Deskripsi aturan

Assert.AreSame dan Assert.AreNotSame bekerja dengan membandingkan referensi dari expected/notExpected dan argumen yang sebenarnya diberikan melalui ReferenceEquals. Oleh karena itu, ketika Anda meneruskan jenis nilai, itu kotak.

Jika menggunakan AreSame, assert itu akan selalu gagal. Jika menggunakan AreNotSame, pernyataan akan selalu berlalu.

Untuk AreSame, satu-satunya kasus ketika pernyataan lolos adalah jika kedua argumen adalah jenis nilai nullable yang nilainya keduanya null. Dalam hal ini, lebih jelas jika memiliki dua panggilan Assert.IsNull terpisah.

Cara memperbaiki pelanggaran

Gunakan Assert.AreEqual dan Assert.AreNotEqual alih-alih Assert.AreSame dan Assert.AreNotSame. Jika menggunakan Assert.AreSame dan kedua argumen adalah tipe nilai nullable yang diharapkan bernilai null, maka dua panggilan terpisah terhadap Assert.IsNull mungkin lebih tepat daripada AreEqual, tergantung pada tujuan pengujian.

Kapan harus menekan peringatan

Jangan mengabaikan peringatan dari aturan ini. Mengabaikan aturan ini akan menghasilkan pernyataan yang akan selalu gagal atau selalu lulus.