Menu
Coddy logo textTech

Birim Testi (NUnit/xUnit)

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 67 / 70.

challenge icon

Görev

Kolay

Birim testleri ekleyerek Kütüphane Sistemi projenizi tamamlayalım! Test yapmak, 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şlevselliğini 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, IsAvailable özelliklerine ve Borrow() ile Return() metotlarına sahip Book sınıfınızı koruyun.
  • User.cs: Ödünç alma takibi, MaxBooks sabiti, CanBorrow() ve ödünç alınan kitapları yönetmek için metotlara sahip User sınıfınızı koruyun.
  • Library.cs: Ödünç alma mantığı, arama metotları ve GetAllBooks() ile GetAllUsers() metotlarına 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 geçip geçmediğini bildiren test metotları 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 şu senaryoları test eden metotlar içermelidir:

  • TestBookBorrow - Mevcut bir kitabı ödünç almanın başarılı olduğunu ve uygunluğunu değiştirdiğini doğrulayın
  • TestBookBorrowUnavailable - Zaten ödünç alınmış bir kitabı ödünç almanın uygun şekilde başarısız olduğunu doğrulayın
  • TestUserBorrowingLimit - Kullanıcıların 3'ten fazla kitap ödünç alamayacağını doğrulayın
  • TestBookReturn - Ödünç alınan bir kitabı iade etmenin doğru çalıştığını doğrulayın
  • TestSearchByAuthor - Yazara göre arama yapmanın doğru kitapları döndürdüğünü doğrulayın

Her test metodu, testin geçip geçmediğini belirten bir boolean değer döndürmelidir. Tüm testleri yürüten ve sonuçları yazdıran basit bir test çalıştırıcı (test runner) oluşturun.

Aşağıdaki girdileri alacaksınız:

  • Çalıştırılacak test senaryosu sayısı (yukarıda listelenen testlere karşılık gelen 1-5 arası)

Çalışan her test için sonucu şu formatta 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 ise:

3

Çıktı şöyle olmalıdır:

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3

Tüm 5 testin olduğu başka bir örnek:

5

Çıktı şöyle olmalıdır:

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5

İzolasyonu sağlamak için testleriniz her test için yeni Book, User ve Library örnekleri oluşturmalıdır. Bu sayede bir testin durumu diğerini etkilemez. Her testi, sisteminizdeki belirli bir davranışın bağımsız 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