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! Test yapmak, kodunuzun doğru çalıştığından ve değişiklik yaptığınızda çalışmaya devam ettiğinden emin olmak için çok önemlidir. Library System'ınızın temel işlevlerini doğrulayan özel bir test dosyası oluşturacaksınız.
Mevcut proje yapınızla çalışmaya devam edecek ve yeni bir test dosyası ekleyeceksiniz:
Book.cs:Id,Title,Author,IsAvailableileBorrow()veReturn()metotlarını içeren Book sınıfınızı koruyun.User.cs: Ödünç alma takibi,MaxBookssabiti,CanBorrow()ve ödünç alınan kitapları yönetmeye yönelik metotları içeren User sınıfınızı koruyun.Library.cs: Ödünç alma mantığına, arama metotlarına veGetAllBooks()ileGetAllUsers()metotlarına sahip Library sınıfınızı koruyun.LibraryTests.cs: Bu, yeni test dosyanızdır! Library System'ınızın 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 metotları yazacaksınız.Program.cs: Testleri çalıştıran ve sonuçları görüntüleyen giriş noktanızdır.
Test sınıfınız, aşağıdaki senaryoları test eden metotları 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- Zaten ö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 fazla ö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 metodu, testin başarılı olup olmadığını belirten bir boolean döndürmelidir. Tüm testleri çalıştıran ve sonuçları yazdıran basit bir test çalıştırıcı 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 arası bir sayı)
Ç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 şu şekildeyse:
3Çıktı şu şekilde olmalıdır:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3Tüm 5 testi içeren başka bir örnek:
5Çıktı şu şekilde 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 tamamlanan bir doğrulaması olarak düşünün!
Kendin dene
using System;
using Library.Tests;
class Program
{
public static void Main(string[] args)
{
// TODO: BorrowingServiceTests örneğini oluştur
// TODO: Her test metodunu çalıştır, her sonuçtan önce test adını yazdır
// Örnek:
// Console.WriteLine("BorrowBook_WhenBookAvailable_ReturnsTrue");
// tests.BorrowBook_WhenBookAvailable_ReturnsTrue();
}
}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