CodeBlanks Logo Icon CodeBlanks

xUnit nedir?

C# kursu · İleri seviye · Ders 67/83

xUnit test çerçevesinin ne olduğunu ve nasıl kullanıldığını öğrenirsin.

xUnit nedir?

xUnit, .NET için en yaygın test çerçevesidir (framework). Bir test metodu [Fact] özniteliğiyle işaretlenir; gövdesinde Assert.Equal(...) gibi doğrulama (assertion) çağrıları bulunur. Test çalıştırıcısı (runner) bu metotları bulur ve çalıştırır.

Birim testi, küçük bir parçanın (örneğin bir metodun) beklenen sonucu ürettiğini denetler. Koda dokunmadan davranışı sabit tutar; yeniden düzenleme (refactoring) sırasında güven verir. xUnit'in kardeşleri NUnit ve MSTest'tir; hepsi benzer düşünce yapısını paylaşır.

Test metodu ve doğrulama

Bir test metodu, genellikle parametresiz ve void olan bir metottur. Üzerindeki [Fact] özniteliği çalıştırıcıya "beni çalıştır" mesajını verir. Gövdede Assert.Equal(beklenen, gerçek) çifti, beklenen ile gerçek değeri karşılaştırır; eşit değilse çerçeve istisna fırlatır ve test başarısız olur.

Adlandırma düzeni TestEkle, ShouldReturnFive gibi okunaklı olmalıdır. Test okunabilirse, başarısızlık nedeni de hızlı anlaşılır.

Uygulama İlk birim testini yaz

Bir FactAttribute sınıfı (Attribute'tan türeyen) ve statik bir Assert sınıfı tanımla; Assert.Equal<T>(T expected, T actual) eşit değilse Exception fırlatsın. Calculator.Add(int, int) metodu ekonsayıları toplasın. CalculatorTests.TestAdd() metodu [Fact] ile işaretlenip Assert.Equal(5, Calculator.Add(2, 3)) çağrısı yapsın. Main testi çağırıp başarılıysa "Test passed: Add(2,3)=5" yazsın.

Örnek çözümü göster
Attribute { } yaz. static class Assert { public static void Equal<T>(T expected, T actual) { if (!EqualityComparer<T>.Default.Equals(expected, actual)) throw new Exception($"Beklenen {expected}, gerçek {actual}"); } } tanımla. class Calculator { public static int Add(int a, int b) => a + b; } yaz. class CalculatorTests { [Fact] public void TestAdd() { Assert.Equal(5, Calculator.Add(2, 3)); } } yaz. Main'de: var tests = new CalculatorTests(); tests.TestAdd(); Console.WriteLine("Test passed: Add(2,3)=5");
Örnek çözüm:
using System;

class FactAttribute : Attribute { }

static class Assert
{
    public static void Equal<T>(T expected, T actual)
    {
        if (!EqualityComparer<T>.Default.Equals(expected, actual))
            throw new Exception($"Beklenen {expected}, gerçek {actual}");
    }
}

class Calculator
{
    public static int Add(int a, int b) => a + b;
}

class CalculatorTests
{
    [Fact]
    public void TestAdd()
    {
        Assert.Equal(5, Calculator.Add(2, 3));
    }
}

class Program
{
    static void Main()
    {
        var tests = new CalculatorTests();
        tests.TestAdd();
        Console.WriteLine("Test passed: Add(2,3)=5");
    }
}

Kendini test et

  1. xUnit ne tür bir araçtır?

    • Bir .NET test çerçevesi
    • Bir veritabanı kütüphanesi
    • Bir web framework'ü
    • Bir log aracı
    Cevabı göster

    Bir .NET test çerçevesi — Doğru. xUnit .NET için birim test çerçevesidir.

  2. Test özniteliğini tamamla

    [____]
    public void TestAdd() { Assert.Equal(5, Calculator.Add(2, 3)); }
    Cevabı göster
    [Fact]
    public void TestAdd() { Assert.Equal(5, Calculator.Add(2, 3)); }
  3. Test terimlerini eşleştir

    [Fact]
    Test metodunu işaretler
    Assert
    Doğrulama yapar
    Runner
    Testleri çalıştırır
    Test method
    Doğrulama içeren metot

İleri seviye bölümündeki tüm dersler