Unit C# menguji kaedah persendirian: mengelakkan ralat masa jalan
Dalam C#, anda boleh menggunakan kelas pengakses yang dijana secara automatik oleh Visual Studio untuk menguji unit kaedah persendirian. Walau bagaimanapun, ralat masa jalan mungkin berlaku apabila cuba memanipulasi keadaan dalaman objek melalui ujian ini.
Masalah asas
Ralat yang dihadapi dalam kod yang disediakan adalah disebabkan oleh sasaran kelas pengakses dianggap sebagai TypeA_Accessor pada masa penyusunan, tetapi dianggap sebagai TypeA pada masa jalan. Ketidakpadanan ini menyebabkan operasi Add() pada target.myList gagal kerana jenis senarai adalah berbeza.
Menyelesaikan ralat
Dalam versi sebelum .NET Core 2.0, anda boleh menggunakan kelas PrivateObject untuk mengakses kaedah peribadi. Ini memerlukan langkah berikut:
<code class="language-csharp">Class target = new Class(); PrivateObject obj = new PrivateObject(target); var retVal = obj.Invoke("PrivateMethod"); Assert.AreEqual(expectedVal, retVal);</code>
Kaedah alternatif
Daripada menguji kaedah persendirian secara langsung, pertimbangkan alternatif berikut:
Sila ambil perhatian bahawa sokongan PrivateObject dan PrivateType telah dialih keluar dalam .NET Core 2.0 dan lebih baru, memerlukan kaedah alternatif untuk mengakses dan menguji kaedah peribadi dalam versi rangka kerja yang lebih baharu.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menguji Unit Kaedah Peribadi dalam C# dan Mengelakkan Ralat Masa Jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!