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

Library 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, IsAvailable ile Borrow() ve Return() metotlarını içeren Book sınıfınızı koruyun.
  • User.cs: Ödünç alma takibi, MaxBooks sabiti, 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 ve GetAllBooks() ile GetAllUsers() 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ın
  • TestBookBorrowUnavailable - Zaten ödünç alınmış bir kitabı ödünç alma işleminin uygun şekilde başarısız olduğunu doğrulayın
  • TestUserBorrowingLimit - Kullanıcıların 3 kitaptan fazla ödünç alamadığını doğrulayın
  • TestBookReturn - Ödünç alınmış bir kitabı iade etmenin doğru şekilde çalıştığını doğrulayın
  • TestSearchByAuthor - 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: 3

Tü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: 5

Yalı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

Kendi başına pratik yap: Online C# derleyicisi