Birim Testi (NUnit/xUnit)
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 67 / 70.
Görev
KolayLibrary System projenizi birim testleri ekleyerek tamamlayalım! Testler, kodunuzun doğru çalıştığından ve değişiklik yaptıkça çalışmaya devam ettiğinden emin olmak için gereklidir. Kütüphane sisteminizin temel işlevlerini doğrulayan özel bir test dosyası oluşturacaksınız.
Mevcut proje yapınız üzerinde çalışmaya devam edecek ve yeni bir test dosyası ekleyeceksiniz:
Book.cs:Id,Title,Author,IsAvailableözelliklerine veBorrow()ileReturn()yöntemlerine sahip Book sınıfınızı koruyun.User.cs: Ödünç alma takibi,MaxBookssabiti,CanBorrow()yöntemi ve ödünç alınan kitapları yönetmeye yönelik yöntemleri olan User sınıfınızı koruyun.Library.cs: Ödünç alma mantığına, arama yöntemlerine veGetAllBooks()ileGetAllUsers()yöntemlerine sahip Library sınıfınızı koruyun.LibraryTests.cs: Bu sizin yeni test dosyanız! Kütüphane sisteminizin doğru çalıştığını doğrulayan bir test sınıfı oluşturun. Çeşitli senaryoları kontrol eden ve her testin başarılı mı yoksa başarısız mı olduğunu bildiren test yöntemleri yazacaksınız.Program.cs: Testleri çalıştıran ve sonuçları görüntüleyen giriş noktanız.
Test sınıfınız, aşağıdaki senaryoları test eden yöntemleri içermelidir:
TestBookBorrow- Kullanılabilir bir kitabı ödünç almanın başarılı olduğunu ve kitabın kullanılabilirlik durumunu değiştirdiğini doğrulayınTestBookBorrowUnavailable- Daha önce ödünç alınmış bir kitabı ödünç alma işleminin uygun şekilde başarısız olduğunu doğrulayınTestUserBorrowingLimit- Kullanıcıların 3 kitaptan fazlasını ödünç alamadığını doğrulayınTestBookReturn- Ödünç alınmış bir kitabı iade etmenin doğru şekilde çalıştığını doğrulayınTestSearchByAuthor- Yazara göre aramanın doğru kitapları döndürdüğünü doğrulayın
Her test yöntemi, testin başarılı olup olmadığını belirten bir boolean değer döndürmelidir. Tüm testleri çalıştıran ve sonuçları yazdıran basit bir test çalıştırıcısı oluşturun.
Aşağıdaki girdileri alacaksınız:
- Çalıştırılacak test senaryolarının sayısı (yukarıda listelenen testlere karşılık gelen 1-5)
Çalıştırılan her test için sonucu şu biçimde yazdırın:
{TestName}: {PASS|FAIL}Tüm testler tamamlandıktan sonra bir özet yazdırın:
--- Test Summary ---
Passed: {count}
Failed: {count}
Total: {count}Örneğin, girdi şuysa:
3Çıktı şu olmalıdır:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3Tüm 5 testin yer aldığı başka bir örnek:
5Çıktı şu olmalıdır:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5Yalıtımı sağlamak için testleriniz her testte yeni Book, User ve Library örnekleri oluşturmalıdır. Böylece bir testin durumu diğerini etkilemez. Her testi, sisteminizdeki belirli bir davranışın kendi içinde tamamlanmış bir doğrulaması olarak düşünün!
Kendin dene
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Çalıştırılacak test sayısını oku
int numTests = Convert.ToInt32(Console.ReadLine());
// TODO: Bir LibraryTests nesnesi oluştur ve ilk numTests testi çalıştır
}
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları9Değişken Argümanlar
'params' Anahtar Kelimesiİsteğe Bağlı Parametrelerİsimlendirilmiş ArgümanlarMetot Aşırı Yükleme12Proje: Kütüphane Sistemi
Proje YapısıKitap ve Kullanıcı ModelleriÖdünç Alma Sistemi MantığıArama için LINQKonsol Arayüzü / Yönetici ArayüzüBirim Testi (NUnit/xUnit)Kendi başına pratik yap: Online C# derleyicisi