


Bagaimana untuk menulis kod yang boleh diuji dalam pembangunan C#
Cara menulis kod yang boleh diuji dalam pembangunan C#
Pengenalan:
Dengan pembangunan berterusan pembangunan perisian, pembangunan dipacu ujian (TDD) dan ujian unit telah menjadi kemahiran penting bagi setiap pembangun. Menulis kod yang boleh diuji adalah kunci untuk memastikan kualiti dan kebolehselenggaraan kod. Artikel ini akan memperkenalkan beberapa petua dan amalan terbaik untuk menulis kod yang boleh diuji dalam pembangunan C#, bersama-sama dengan contoh kod khusus.
1. Ikut prinsip SOLID
Prinsip SOLID ialah lima prinsip asas reka bentuk berorientasikan objek. Ia membantu meningkatkan kebolehujian dan kebolehselenggaraan kod. Berikut ialah gambaran ringkas tentang prinsip ini:
- Prinsip Tanggungjawab Tunggal (SRP): Kelas sepatutnya mempunyai satu sebab sahaja untuknya berubah.
- Prinsip Tertutup-Terbuka (OCP): Entiti perisian harus boleh dikembangkan dan bukannya mengubah suai kod sedia ada.
- Prinsip Penggantian Liskov (LSP): Subkelas seharusnya dapat menggantikan kelas induk tanpa tingkah laku yang tidak dijangka.
- Prinsip Pengasingan Antara Muka (ISP): Pelanggan tidak boleh dipaksa untuk bergantung pada antara muka yang tidak digunakannya.
- Prinsip Penyongsangan Ketergantungan (DIP): Modul peringkat tinggi tidak boleh bergantung pada modul peringkat rendah. Kedua-duanya harus bergantung pada abstraksi.
Mengikut prinsip ini boleh membantu kami menulis kod gandingan rendah yang boleh diuji. . Ini bermakna kita boleh menggunakan objek olok-olok atau ujian gandaan sebagai ganti kebergantungan sebenar untuk ujian unit.
Kod contoh:
public interface IEmailService { void SendEmail(string to, string subject, string body); } public class EmailService : IEmailService { public void SendEmail(string to, string subject, string body) { // 发送电子邮件的实现逻辑 } } public class MyClass { private readonly IEmailService _emailService; public MyClass(IEmailService emailService) { _emailService = emailService; } public void DoSomething() { // 使用_emailService进行操作 } } // 在单元测试中使用测试替身 [TestClass] public class MyClassTests { [TestMethod] public void DoSomething_ShouldSendEmail() { var emailServiceMock = new Mock<IEmailService>(); var myClass = new MyClass(emailServiceMock.Object); myClass.DoSomething(); emailServiceMock.Verify(e => e.SendEmail(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once); } }
Menulis kaedah yang boleh diuji adalah kunci untuk menulis kod yang boleh diuji. Berikut ialah beberapa petua biasa:
Pisah kaedah kepada unit berfungsi yang kecil dan khusus, yang setiap satunya melakukan satu perkara sahaja.
- Elakkan menggunakan kaedah statik dan keadaan global dalam kaedah kerana ia meningkatkan kerumitan kod dan gandingan yang ketat. Cuba elakkan daripada menggunakan sumber luaran yang sangat digabungkan (seperti pangkalan data, permintaan rangkaian, dsb.) dan alihkan operasi ini untuk memisahkan kelas atau antara muka sebanyak mungkin. Gunakan pembina berparameter untuk menghantar kebergantungan dan bukannya menciptanya di dalam kaedah.
- Contoh kod:
public class Calculator { public int Add(int a, int b) { return a + b; } public int Divide(int a, int b) { if (b == 0) { throw new DivideByZeroException(); } return a / b; } } // 单元测试 [TestClass] public class CalculatorTests { [TestMethod] public void Add_ShouldReturnSum() { var calculator = new Calculator(); var result = calculator.Add(2, 3); Assert.AreEqual(5, result); } [TestMethod] public void Divide_ShouldThrowDivideByZeroException() { var calculator = new Calculator(); Assert.ThrowsException<DivideByZeroException>(() => calculator.Divide(5, 0)); } }
Menulis kod yang boleh diuji adalah sangat penting untuk memastikan kualiti perisian dan kebolehselenggaraan. Mengikuti prinsip SOLID, menggunakan suntikan kebergantungan dan menulis kaedah yang boleh diuji adalah langkah utama. Dengan petua dan amalan terbaik ini, kami boleh menulis kod C# yang lebih mantap dan boleh diuji.
Rujukan:
Martin, Robert C. "Kod Bersih: Buku Panduan Ketukangan Perisian Tangkas, 2008.
- Freeman, Steve, dan Nat Pryce "Perisian Berorientasikan Objek Berkembang,. " Addison-Wesley, 2009.
Atas ialah kandungan terperinci Bagaimana untuk menulis kod yang boleh diuji dalam pembangunan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Langkah-langkah untuk antara muka ujian unit dan kelas abstrak dalam Java: Buat kelas ujian untuk antara muka. Buat kelas olok-olok untuk melaksanakan kaedah antara muka. Gunakan perpustakaan Mockito untuk mengejek kaedah antara muka dan menulis kaedah ujian. Kelas abstrak mencipta kelas ujian. Buat subkelas bagi kelas abstrak. Tulis kaedah ujian untuk menguji ketepatan kelas abstrak.

Ujian prestasi menilai prestasi aplikasi di bawah beban yang berbeza, manakala ujian unit mengesahkan ketepatan satu unit kod. Ujian prestasi memfokuskan pada mengukur masa tindak balas dan daya pemprosesan, manakala ujian unit memfokuskan pada output fungsi dan liputan kod. Ujian prestasi mensimulasikan persekitaran dunia sebenar dengan beban tinggi dan serentak, manakala ujian unit dijalankan di bawah beban rendah dan keadaan bersiri. Matlamat ujian prestasi adalah untuk mengenal pasti kesesakan prestasi dan mengoptimumkan aplikasi, manakala matlamat ujian unit adalah untuk memastikan ketepatan dan keteguhan kod.

Analisis alat ujian unit PHP: PHPUnit: sesuai untuk projek besar, menyediakan fungsi yang komprehensif dan mudah dipasang, tetapi mungkin bertele-tele dan perlahan. PHPUnitWrapper: sesuai untuk projek kecil, mudah digunakan, dioptimumkan untuk Lumen/Laravel, tetapi mempunyai fungsi terhad, tidak menyediakan analisis liputan kod dan mempunyai sokongan komuniti terhad.

Ujian dipacu jadual memudahkan penulisan kes ujian dalam ujian unit Go dengan mentakrifkan input dan output yang dijangka melalui jadual. Sintaks termasuk: 1. Tentukan kepingan yang mengandungi struktur kes ujian 2. Gelung melalui kepingan dan bandingkan keputusan dengan output yang dijangkakan. Dalam kes sebenar, ujian dipacu jadual telah dilakukan pada fungsi menukar rentetan kepada huruf besar, dan gotest digunakan untuk menjalankan ujian dan keputusan lulus telah dicetak.

Ujian unit dan ujian penyepaduan ialah dua jenis ujian fungsi Go yang berbeza, yang digunakan untuk mengesahkan interaksi dan penyepaduan fungsi tunggal atau berbilang fungsi masing-masing. Ujian unit hanya menguji kefungsian asas fungsi tertentu, manakala ujian penyepaduan menguji interaksi antara pelbagai fungsi dan penyepaduan dengan bahagian lain aplikasi.

Adalah penting untuk mereka bentuk kes ujian unit yang berkesan, mematuhi prinsip berikut: atom, ringkas, boleh berulang dan tidak jelas. Langkah-langkahnya termasuk: menentukan kod yang akan diuji, mengenal pasti senario ujian, mencipta penegasan dan menulis kaedah ujian. Kes praktikal menunjukkan penciptaan kes ujian untuk fungsi max(), menekankan kepentingan senario dan penegasan ujian tertentu. Dengan mengikuti prinsip dan langkah ini, anda boleh meningkatkan kualiti dan kestabilan kod.

Cara meningkatkan liputan kod dalam ujian unit PHP: Gunakan pilihan --coverage-html PHPUnit untuk menjana laporan liputan. Gunakan kaedah setAccessible untuk mengatasi kaedah dan sifat peribadi. Gunakan penegasan untuk mengatasi syarat Boolean. Dapatkan cerapan liputan kod tambahan dengan alat semakan kod.

Ringkasan: Dengan menyepadukan rangka kerja ujian unit PHPUnit dan saluran paip CI/CD, anda boleh meningkatkan kualiti kod PHP dan mempercepatkan penghantaran perisian. PHPUnit membenarkan penciptaan kes ujian untuk mengesahkan kefungsian komponen, dan alatan CI/CD seperti GitLabCI dan GitHubActions boleh menjalankan ujian ini secara automatik. Contoh: Sahkan pengawal pengesahan dengan kes ujian untuk memastikan fungsi log masuk berfungsi seperti yang diharapkan.
