Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menguji Unit Kaedah Peribadi dalam C# dan Mengelakkan Ralat Masa Jalan?

Bagaimanakah saya boleh menguji Unit Kaedah Peribadi dalam C# dan Mengelakkan Ralat Masa Jalan?

Barbara Streisand
Lepaskan: 2025-01-18 21:51:09
asal
403 orang telah melayarinya

How Can I Unit Test Private Methods in C# and Avoid Runtime Errors?

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>
Salin selepas log masuk

Kaedah alternatif

Daripada menguji kaedah persendirian secara langsung, pertimbangkan alternatif berikut:

  • Menguji kaedah awam yang memanggil kaedah peribadi: Dengan menguji kelakuan kaedah awam, anda secara tidak langsung boleh mengesahkan kefungsian kaedah dalaman.
  • Refactor untuk mengalih keluar kaedah persendirian: Jika boleh, ekstrak kaedah persendirian ke dalam kelas awam atau dilindungi baharu supaya ia boleh diuji terus.
  • Gunakan Suntikan Ketergantungan: Cipta abstraksi untuk komponen dalaman dan suntikkannya ke dalam kelas yang sedang diuji untuk memudahkan penggantian ujian.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan