IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

AutoFixture, birim testi yazımının 'Düzenleme' aşamasını en aza indirgemeyi hedefleyerek test yönetimini geliştiren, açık kaynaklı bir .NET kütüphanesidir. Ana amacı, test ettiğiniz unsur üzerine odaklanmanızı sağlamak, kurulum sürecinden ziyade, test verileriyle nesne grafikleri oluşturmanızı sağlamaktır. Bu makale, AutoFixture'ın verimli test veri jenerasyonu yoluyla test odaklı geliştirmeyi nasıl kolaylaştırabileceğini incelemektedir.

AutoFixture, birim testleri için test verileri oluşturma sürecini düzene sokmak üzere tasarlanmış güçlü bir C# kütüphanesidir. Geliştiricilere, test senaryoları için otomatik olarak veri oluşturarak tekrar eden kurulum kodları yazmaktan kaçınmalarına yardımcı olur. Birim testlerde, AutoFixture, her bir birim testinin çeşitli ve gerçekçi girdilerle yürütüldüğünü garanti ederek veri oluşturma sürecini düzene sokar. AutoFixture, test verilerini otomatik olarak üreterek C# dilinde test yapmayı daha verimli hale getirir ve elle kurulum gereksinimini azaltır.

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - AutoFixture

AutoFixture Yükleme ve Kurulumu

AutoFixture, bir NuGet paketi olarak sunulur ve NuGet Package Manager Konsolu veya Visual Studio'nun NuGet Package Manager UI'si içindeki .NET paket ekleme aracı kullanılarak yüklenebilir.

PM > Install-Package AutoFixture

NuGet, AutoFixture'ın en son sürümünü ve bunun bağımlılıklarını projenize indirip kuracaktır.

Bir Sınıf İçin Test Veri Oluşturma Örneği

Basit bir çalışan sınıfımızın FirstName, LastName ve Age gibi özellikleri olduğunu varsayalım. Birim testlerimizde bu sınıfın örneklerini elle oluşturmak yerine, bizim için rastgele veri oluşturması amacıyla AutoFixture'dan faydalanabiliriz.

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }

    public Employee(string firstName, string lastName, int age)
    {
        FirstName = firstName;
        LastName = lastName;
        Age = age;
    }

    public string GetFullName() => $"{FirstName} {LastName}";
}

Kod Açıklaması

Employee sınıfı, bir çalışanın ad, soyadı ve yaş gibi temel detaylarını FirstName, LastName ve Age özellikleri ile kapsar. Yapıcı yöntemi, bu detayları parametre olarak kabul ederek ve ilgili özelliklere atayarak bir çalışan nesnesinin oluşturulmasını kolaylaştırır. Ayrıca, GetFullName metodu çalışanın ad ve soyadını birleştirir, tam adı bir dize olarak döndürür.

Test Senaryomuz İçin Kodu Ayarlama

Bir sonraki adımda, Employee sınıfını test etmek için bir test sınıfı oluşturacağız:

using AutoFixture;

public class EmployeeTests
{
    private readonly IFixture _fixture;

    public EmployeeTests()
    {
        // Using AutoFixture's Fixture to create test data
        _fixture = new Fixture();
    }
}

Kod Açıklaması

Bu kod örneği, Employee sınıfı için birim testlerine AutoFixture'ı entegre eder. AutoFixture ad alanını dahil ederek, geliştiriciler veri üretimi işlevine erişir. _fixture alanı, yeni bir Fixture örneği ile başlatılarak, test verisi oluşturmayı kolaylaştırır. Bu düzen, kapsamlı Employee sınıfı için test verimliliğini ve güvenilirliğini artırır.

Örnek 1: Çalışan Test Durumu Nesne Değerlerini Doğrulama

[Fact]
public void Employee_ShouldHaveValidValues()
{
    // Arrange
    var firstName = _fixture.Create<string>();
    var lastName = _fixture.Create<string>();
    var age = _fixture.Create<int>();

    // Act
    var employee = new Employee(firstName, lastName, age);

    // Assert
    Assert.Equal(firstName, employee.FirstName);
    Assert.Equal(lastName, employee.LastName);
    Assert.Equal(age, employee.Age);
}

Kod Açıklaması

Test metodu Employee_ShouldHaveValidValues, Employee sınıfının özelliklerini sağlanan değerlerle doğru bir şekilde başlattığını doğrular. FirstName, LastName ve Age için rastgele veri oluşturmak üzere bir test fikstürü kullanarak, test bir Employee örneği oluşturur. Daha sonra, FirstName, LastName ve Age özelliklerinin Employee nesnesinin oluşturulan değerlere uyup uymadığını ve yapıcının bu özellikleri doğru bir şekilde ayarlayıp ayarlamadığını kontrol eder.

Örnek 2: Yapıcı Çağrıldığında Çalışanı Doğrulama

[Fact]
public void CreateEmployee_ValidData_ReturnsEmployeeObject()
{
    // Arrange
    var employee = _fixture.Create<Employee>();

    // Act 
    // Assert
    Assert.NotNull(employee);
    Assert.False(string.IsNullOrEmpty(employee.FirstName));
    Assert.NotNull(employee.LastName);
    Assert.True(employee.Age > 0);
}

Kod Açıklaması

Bu test metodu, bir Employee nesnesinin özelliklerinin rastgele üretilen değerlerle eşleşip eşleşmediğini doğrulamak için test iddialarını içerir. string türü özellikleri FirstName ve LastName ile int Age'nın düzgün ayarlanıp ayarlanmadığını ve geçerli olup olmadığını doğrular. Herhangi bir başarısız iddia, çalışan ayrıntıları için beklenen ve rastgele oluşturulan değerler arasındaki uyumsuzluğu gösterir.

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Geçerli Çalışan Veri Birim Testi

IronPDF Tanıtımı

IronPDF C# PDF Kütüphanesi, PDF metnini okumayı ve HTML kullanarak PDF belgeleri oluşturmayı kolaylaştıran, Iron Software tarafından geliştirilen sağlam bir C# PDF kütüphanesidir. Bu çok yönlü araç, stil bilgileriyle tamamlanan kolay biçimlendirilebilir belgeleri yüksek kaliteli PDF'lere dönüştürmeye olanak tanır. IronPDF ile, HTML içeriğini URL'lerden çekmek ve iyi yapılandırılmış PDF dosyalarına dönüştürmek, HTML'den PDF oluşturmanın sorunsuz bir sürecidir. Bu yetenek, web içeriğinden doğrudan profesyonel PDF belgeleri oluşturmayı otomatikleştirmek ve düzene sokmak isteyen geliştiriciler için IronPDF'ü vazgeçilmez bir araç haline getirir.

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF

Installing IronPDF

NuGet Package Manager konsolunu açın ve şu komutu çalıştırın:

PM > Install-Package IronPdf

IronPDF ile AutoFixture'ın özelliklerini kullanarak Kod Örneği

Aşağıda, AutoFixture ve IronPDF'ü birlikte kullanarak çalışan verisinin PDF'sini üretmeyi gösteren bir örnek bulunmaktadır:

using DemoAutofixture;
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class EmployeePdfGenerator
{
    private readonly Fixture _fixture;

    public EmployeePdfGenerator()
    {
        _fixture = new Fixture();
    }

    public List<Employee> GenerateEmployees(int count)
    {
        return _fixture.CreateMany<Employee>(count).ToList();
    }

    public void GeneratePdf(List<Employee> employees, string filePath)
    {
        IronPdf.License.LicenseKey = "Your-License-Key-Here";
        var renderer = new ChromePdfRenderer();
        string htmlContent = GenerateHtml(employees);

        try
        {
            renderer.RenderHtmlAsPdf(htmlContent).SaveAs(filePath);
            Console.WriteLine("PDF Created Successfully!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error generating PDF: {ex.Message}");
        }
    }

    private string GenerateHtml(List<Employee> employees)
    {
        StringBuilder htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<!DOCTYPE html><html><head><title>Employee List</title></head><body><h1>Employee List</h1><ul>");

        foreach (var employee in employees)
        {
            htmlBuilder.Append($"<li>{employee.GetFullName()} - Age: {employee.Age}</li>");
        }

        htmlBuilder.Append("</ul></body></html>");
        return htmlBuilder.ToString();
    }
}

Bu sınıfı kullanmak için EmployeePdfGenerator örneğini oluşturur, bir çalışan listesi oluşturur ve ardından GeneratePdf çağırırsınız:

List<Employee> employees = new()
{
    new Employee("John", "Smith", 32),
    new Employee("Emily", "Davis", 18),
    new Employee("David", "Brown", 24),
    new Employee("Jane", "Doe", 16),
    new Employee("Michael", "Johnson", 49),
};

EmployeePdfGenerator pdfGenerator = new();
pdfGenerator.GeneratePdf(employees, "EmployeeList.pdf");

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - IronPDF Çıkışlı AutoFixture

Kod Açıklaması

Verilen C# kodu, çalışanların ve yaşlarının listelendiği bir PDF belgesi oluşturmak için IronPDF kütüphanesini kullanır. Bu, GeneratePdf yöntemini içeren EmployeePdfGenerator sınıfını tanımlar ve bu yöntem, Employee nesneleri ve bir dosya yolunu alır. Dahili olarak, HTML içeriğini GenerateHtml yöntemi ile oluşturur ve ardından bu HTML'yi PDF olarak işlemek için IronPDF'nin HtmlToPdf sınıfını kullanır, belirtilen dosya yolunda kaydedilir. Geliştirmeler, HTML üretimi için StringBuilder kullanmayı ve PDF üretimi ile dosya kaydı için temel hata ayıklamayı içerir.

Test Yöntemini Yazma

Aşağıdaki kurulumda, AutoFixture, Employee sınıfının örneklerini oluşturmak ve test için rastgele veri üretmeyi sağlamak için kullanılır. IronPDF, çalışan bilgileri de dahil olmak üzere HTML içeriğini PDF biçimine sorunsuzca dönüştürmek için kullanılır. EmployeePdfGenerator sınıfı bu işlemleri düzenler, hem veri üretimini hem de PDF dönüştürmesini verimli bir şekilde yönetir. Bu arada, EmployeePdfGeneratorTests XUnit test sınıfı PDF üretiminin düzgün çalışmasını kapsamlı testlerle güvence altına alır. Bu entegre yaklaşım, çalışan verilerinin oluşturulmasını ve dokümantasyonunu basitleştirir, PDF oluşturma sürecinde sağlamlık ve güvenilirlik sağlar.

using System.IO;
using Xunit;

public class EmployeePdfGeneratorTests
{
    [Fact]
    public void GeneratePdf_GeneratesPdfFile()
    {
        // Arrange
        var generator = new EmployeePdfGenerator();
        var employees = generator.GenerateEmployees(5);
        string filePath = "EmployeeList.pdf";

        // Act
        generator.GeneratePdf(employees, filePath);

        // Assert
        Assert.True(File.Exists(filePath));
    }
}

EmployeePdfGeneratorTests sınıfı burada belirtilen dosya yolunda bir PDF dosyası oluşturulmasını doğrulayan bir test vakası içerir, GeneratePdf yönteminin doğru çalışmasını garanti eder.

AutoFixture C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - AutoFixture C#

Sonuç

AutoFixture, .NET'te birim testleri yazmanın 'Düzenleme' aşamasını basitleştirir, geliştiricilere kurulum ayrıntılarından ziyade test vakalarına odaklanma imkanı sunar. Birim test sürecini, çeşitli ve gerçekçi girdileri garanti ederek test verilerini otomatik olarak oluşturarak düzene sokar. IronPDF Lisans Bilgileri ile birlikte, sürekli kullanım ve destek için güçlü bir kombinasyon sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez