Pengujian Unit (NUnit/xUnit)
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 67 dari 70.
Tantangan
MudahMari selesaikan proyek Library System-mu dengan menambahkan unit test! Pengujian penting untuk memastikan kodemu berfungsi dengan benar dan tetap berfungsi saat kamu membuat perubahan. Kamu akan membuat file pengujian khusus yang memverifikasi fungsi inti sistem perpustakaanmu.
Kamu akan melanjutkan pekerjaan dengan struktur proyek yang sudah ada dan menambahkan file pengujian baru:
Book.cs: Pertahankan class Book-mu denganId,Title,Author,IsAvailable, serta methodBorrow()danReturn().User.cs: Pertahankan class User-mu dengan pelacakan peminjaman, konstantaMaxBooks,CanBorrow(), dan method untuk mengelola buku yang dipinjam.Library.cs: Pertahankan class Library-mu dengan logika peminjaman, method pencarian, serta methodGetAllBooks()danGetAllUsers().LibraryTests.cs: Ini adalah file pengujian barumu! Buat class pengujian yang memverifikasi bahwa sistem perpustakaanmu berfungsi dengan benar. Kamu akan menulis method pengujian yang memeriksa berbagai skenario dan melaporkan apakah setiap pengujian berhasil atau gagal.Program.cs: Titik masukmu yang menjalankan pengujian dan menampilkan hasilnya.
Class pengujianmu harus menyertakan method untuk menguji skenario berikut:
TestBookBorrow- Verifikasi bahwa peminjaman buku yang tersedia berhasil dan mengubah ketersediaannyaTestBookBorrowUnavailable- Verifikasi bahwa peminjaman buku yang sudah dipinjam gagal sebagaimana mestinyaTestUserBorrowingLimit- Verifikasi bahwa pengguna tidak dapat meminjam lebih dari 3 bukuTestBookReturn- Verifikasi bahwa pengembalian buku yang dipinjam berfungsi dengan benarTestSearchByAuthor- Verifikasi bahwa pencarian berdasarkan penulis mengembalikan buku yang benar
Setiap method pengujian harus mengembalikan boolean yang menunjukkan apakah pengujian berhasil. Buat test runner sederhana yang menjalankan semua pengujian dan mencetak hasilnya.
Kamu akan menerima input berikut:
- Jumlah skenario pengujian yang akan dijalankan (1-5, sesuai dengan pengujian yang tercantum di atas)
Untuk setiap pengujian yang dijalankan, cetak hasilnya dengan format:
{TestName}: {PASS|FAIL}Setelah semua pengujian selesai, cetak ringkasan:
--- Test Summary ---
Passed: {count}
Failed: {count}
Total: {count}Contohnya, jika inputnya adalah:
3Outputnya seharusnya:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3Contoh lain dengan semua 5 pengujian:
5Outputnya seharusnya:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5Pengujianmu harus membuat instance baru Book, User, dan Library untuk setiap pengujian agar semuanya terisolasi. Dengan begitu, status dari satu pengujian tidak memengaruhi pengujian lainnya. Anggap setiap pengujian sebagai verifikasi mandiri untuk perilaku tertentu dalam sistemmu!
Coba sendiri
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Baca jumlah pengujian yang akan dijalankan
int numTests = Convert.ToInt32(Console.ReadLine());
// TODO: Buat object LibraryTests dan jalankan numTests pengujian pertama
}
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Arsitektur class
Data Instance vs StaticKata Kunci 'readonly' & 'const'Field PendukungRingkasan: Pengelola Rekening Bank6Enkapsulasi
Pengubah AksesProperti untuk EnkapsulasiImplementasi Penyembunyian DataPola ImutabilitasUlasan: Data Siswa12Proyek: Sistem Perpustakaan
Struktur ProyekModel Buku dan PenggunaLogika Sistem PeminjamanLINQ untuk PencarianUI Konsol / Antarmuka AdminPengujian Unit (NUnit/xUnit)Latihan sendiri: Compiler C# online