Altbilgi içeriğine atla
.NET YARDıM

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır)

NBuilder, test verisi üretimini basitleştiren bir .NET kütüphanesidir. Geliştiriciler, akıcı arayüzü yardımıyla karmaşık nesne grafiklerini zahmetsizce oluşturabilirler. Esneklik, verimlilik ve popüler test çerçeveleriyle sorunsuz entegrasyon sunar. Bu makalede NBuilder'ın özelliklerini, nasıl kurulduğunu ve pratik kod örnekleriyle yeteneklerini keşfedeceğiz.

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - NBuilder

NBuilder'ın Özellikleri

  1. NBuilder, test ve mock amaçları için nesne oluşturmayı basitleştirmek üzere tasarlanmış bir C# açık kaynaklı .NET kütüphanesidir. Geliştiriciler, varsayılan veya özel olarak belirtilen girdilerle farklı veri tiplerine dayalı nesneleri hızla üretebilirler.
  2. Özellikle birim testleri, fonksiyonel testler ve entegrasyon testleri için faydalıdır.
  3. Gömülü .NET veri türleri ve karmaşık nesneler için testlerin vazgeçilmez paketlerinden biridir.
  4. Rastgele veri üretimi için kullanılır. Bu açık kaynak projeye katkıda bulunabilirsiniz.
  5. NBuilder ile varsayılan özellikleri kolaylıkla geçersiz kılabilir ve özel yapılandırmalar yazabilirsiniz.

NBuilder'ı Kurma

NBuilder'ı NuGet Paket Yöneticisi Konsolu'ndan kurmak için aşağıdaki komutu kullanın.

Install-Package NBuilder

Yukarıdaki komut, NBuilder'ı tüm bağımlılıklarıyla birlikte kuracaktır.

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - NBuilder Yükleme

NBuilder'ın Kullanımı

NBuilder, nesneleri hızla oluşturmak için akıcı bir yol sağlar. Basit bir nesne oluşturma örneğiyle başlayalım.

İşte Kişi Model Sınıfı'nın kaynak kodu.

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public bool IsMarried { get; set; }
}
class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public bool IsMarried { get; set; }
}
Friend Class Person
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property Email() As String
	Public Property IsMarried() As Boolean
End Class
$vbLabelText   $csharpLabel

Örnek 1: Varsayılan Değerlerle Kişi Nesnesi Oluşturma

// Create a new person object with default values using NBuilder
var person = Builder<Person>
                .CreateNew()
                .Build();
// By default, NBuilder can provide values like 
// Id = 1, Name = Name1, Email = Email1, IsMarried = false
// Create a new person object with default values using NBuilder
var person = Builder<Person>
                .CreateNew()
                .Build();
// By default, NBuilder can provide values like 
// Id = 1, Name = Name1, Email = Email1, IsMarried = false
' Create a new person object with default values using NBuilder
Dim person = Builder(Of Person) .CreateNew().Build()
' By default, NBuilder can provide values like 
' Id = 1, Name = Name1, Email = Email1, IsMarried = false
$vbLabelText   $csharpLabel

Örnek Görüntü

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Değerlerle Birlikte Kişi Nesnesi

Örnek 2: Özel Bir Yapıcı İle Nesneler Oluşturma

İşte NBuilder kullanarak, özel özelliklere sahip bir Kişi nesnesi oluşturmanın ve yapılandırmanın bir örneği:

// Initialize a custom builder for the Person object with specific values
var customPersonBuilder = Builder<Person>.CreateNew()
                .With(p => p.Name = "Tom")
                .With(p => p.Email = "Tom@email.com");
// Build the custom person object with the specified properties
var objTom = customPersonBuilder.Build();
// Initialize a custom builder for the Person object with specific values
var customPersonBuilder = Builder<Person>.CreateNew()
                .With(p => p.Name = "Tom")
                .With(p => p.Email = "Tom@email.com");
// Build the custom person object with the specified properties
var objTom = customPersonBuilder.Build();
' Initialize a custom builder for the Person object with specific values
Dim customPersonBuilder = Builder(Of Person).CreateNew().With(Sub(p) p.Name = "Tom").With(Sub(p) p.Email = "Tom@email.com")
' Build the custom person object with the specified properties
Dim objTom = customPersonBuilder.Build()
$vbLabelText   $csharpLabel

Yukarıdaki kod, özel özelliklerle yeni bir Kişi nesnesi oluşturur. Bir Kişi objesi için customPersonBuilder'ı başlatır, Ad'ı 'Tom' ve E-posta'yı 'Tom@email.com' olarak ayarlar. Son olarak, nesneyi derleyip objTom'a atar.

Örnek 3: Varsayılan Değerli Kişi Nesne Listesi Oluşturma

// Create a list of 10 Person objects with default values using NBuilder
var personList = Builder<Person>
                                     .CreateListOfSize(10)
                                     .Build();
// Create a list of 10 Person objects with default values using NBuilder
var personList = Builder<Person>
                                     .CreateListOfSize(10)
                                     .Build();
' Create a list of 10 Person objects with default values using NBuilder
Dim personList = Builder(Of Person) .CreateListOfSize(10).Build()
$vbLabelText   $csharpLabel

Örnek Görüntü

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Kişi Nesne Listesi

Burada personList, varsayılan değerleriyle 10 nesne içerir ve onları yazdırır.

// Creating a list of 10 Person objects with default values
var personList = Builder<Person>
                                            .CreateListOfSize(10)
                                            .Build();

// Print details of each Person object in the list
foreach (var person in personList)
{
    Console.WriteLine($"{person.Id}, {person.Name}, {person.Email}, {person.IsMarried}");
}
// Creating a list of 10 Person objects with default values
var personList = Builder<Person>
                                            .CreateListOfSize(10)
                                            .Build();

// Print details of each Person object in the list
foreach (var person in personList)
{
    Console.WriteLine($"{person.Id}, {person.Name}, {person.Email}, {person.IsMarried}");
}
' Creating a list of 10 Person objects with default values
Dim personList = Builder(Of Person) .CreateListOfSize(10).Build()

' Print details of each Person object in the list
For Each person In personList
	Console.WriteLine($"{person.Id}, {person.Name}, {person.Email}, {person.IsMarried}")
Next person
$vbLabelText   $csharpLabel

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - Otomatik Değer Atama

Örnek 4: Oluşturulan Nesneleri Özelleştirme

Bazen oluşturduğunuz nesneleri özelleştirmeniz gerekebilir. Bir nesnenin değerini With() yöntemi kullanarak da özelleştirebilirsiniz.

// Customize properties for all Person objects in the list
var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = "Kim")
                .With(p => p.Email = "abc@email.com")
                .With(p => p.IsMarried = false)
                .Build();
// Customize properties for all Person objects in the list
var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = "Kim")
                .With(p => p.Email = "abc@email.com")
                .With(p => p.IsMarried = false)
                .Build();
' Customize properties for all Person objects in the list
Dim personList = Builder(Of Person) .CreateListOfSize(10).All().With(Sub(p) p.Name = "Kim").With(Sub(p) p.Email = "abc@email.com").With(Sub(p) p.IsMarried = False).Build()
$vbLabelText   $csharpLabel

Bu işlem, her nesnenin varsayılan değerini Name = "Kim", Email = "abc@email.com" ve IsMarried = false olacak şekilde değiştiren bir personList oluşturur.

Örnek 5: Gerçekçi Rastgele Verilerle Kişi Nesne Listesi Oluşturma

Kişi Listesinde gerçekçi veri değerleri elde etmek için Faker Library .NET'i kullanarak gerçekçi veri oluşturabilirsiniz.

// Creating a list of Person objects with random yet realistic values using Faker
var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = Faker.Name.FullName())
                .With(p => p.Id = Faker.RandomNumber.Next(20, 60))
                .Build();
// Creating a list of Person objects with random yet realistic values using Faker
var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = Faker.Name.FullName())
                .With(p => p.Id = Faker.RandomNumber.Next(20, 60))
                .Build();
' Creating a list of Person objects with random yet realistic values using Faker
Dim personList = Builder(Of Person) .CreateListOfSize(10).All().With(Sub(p) p.Name = Faker.Name.FullName()).With(Sub(p) p.Id = Faker.RandomNumber.Next(20, 60)).Build()
$vbLabelText   $csharpLabel

Örnek 6: Sıralı Verilerle Kişi Nesne Listesi Oluşturma

Bazı zamanlarda sıralı verilerle nesneler üretmeniz gerekebilir. NBuilder .NET bunu Do yöntemi kullanarak kolaylaştırır.

// Creating a list of 10 sequential Person objects using NBuilder
var personList = Builder<Person>.CreateListOfSize(10)
                .All()
                .Do((p, i) => p.Id = 501 + i)
                .Do((p, i) => p.Name = $"Person {i + 1}")
                .Build();
// Creating a list of 10 sequential Person objects using NBuilder
var personList = Builder<Person>.CreateListOfSize(10)
                .All()
                .Do((p, i) => p.Id = 501 + i)
                .Do((p, i) => p.Name = $"Person {i + 1}")
                .Build();
' Creating a list of 10 sequential Person objects using NBuilder
Dim personList = Builder(Of Person).CreateListOfSize(10).All().Do(Sub(p, i) p.Id = 501 + i).Do(Sub(p, i) p.Name = $"Person {i + 1}").Build()
$vbLabelText   $csharpLabel

Burada, All() yöntemi, bellekte oluşturulan 10 kişi nesnesinin tamamına sonraki işlemlerin uygulanmasını sağlar. Do() yöntemi, her Person nesnesinde Action temsilcisini yürütür. Bu kurulum, Id özelliğini 501'den başlayarak sıralı bir şekilde atar ve benzer şekilde her kişiyi "Kişi 1"'den "Kişi 10"'a kadar isimlendirir.

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 6 - Sıralı Veri

Örnek 7: Xunit Kulanarak NBuilder ile Birim Testleri

.NET'te NBuilder, geliştiricilerin test için gerçekçi ve çeşitli bir veri seti oluşturmaları gereken test ortamlarında önemli ölçüde kullanılmaktadır. Bu, karmaşık nesnelerle test yapmayı kolay ve sürdürülebilir hale getirir, geliştiricilerin, verimli ve esnek test verisi üretimi ilgisini çekenlere yönelik lambda ifadeleri ve temsilci işlevleri kullanarak özel başlatma mantığı tanımlamalarına olanak tanır.

Birim Testleri İçin Model Sınıfı ve Servis

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public bool IsMarried { get; set; }
}

class PersonService
{
    public string GetPersonEmail(Person person)
    {
        return person.Email;
    }
}
class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public bool IsMarried { get; set; }
}

class PersonService
{
    public string GetPersonEmail(Person person)
    {
        return person.Email;
    }
}
Friend Class Person
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property Email() As String
	Public Property IsMarried() As Boolean
End Class

Friend Class PersonService
	Public Function GetPersonEmail(ByVal person As Person) As String
		Return person.Email
	End Function
End Class
$vbLabelText   $csharpLabel

Burada, Person sınıfı, Id, Name, Email ve IsMarried gibi çeşitli özelliklere sahiptir, PersonService ise verilen bir Person nesnesinin e-posta adresini döndüren GetPersonEmail() adlı bir metoda sahiptir.

Test Sınıfları ve Test Verisi

using Xunit;

public class PersonTests
{
     [Fact]
     public void GetPersonEmail_ReturnCorrectEmail()
     {
         // Arrange
         var service = new PersonService();
         string expectedEmail = "Tom@email.com";

         // Create a person with specific name and email using NBuilder
         var person = Builder<Person>.CreateNew()
             .With(p => p.Name = "Tom")
             .With(p => p.Email = "Tom@email.com")
             .Build();

         // Act
         var actualEmail = service.GetPersonEmail(person);

         // Assert
         Assert.Equal(expectedEmail, actualEmail);
     }
}
using Xunit;

public class PersonTests
{
     [Fact]
     public void GetPersonEmail_ReturnCorrectEmail()
     {
         // Arrange
         var service = new PersonService();
         string expectedEmail = "Tom@email.com";

         // Create a person with specific name and email using NBuilder
         var person = Builder<Person>.CreateNew()
             .With(p => p.Name = "Tom")
             .With(p => p.Email = "Tom@email.com")
             .Build();

         // Act
         var actualEmail = service.GetPersonEmail(person);

         // Assert
         Assert.Equal(expectedEmail, actualEmail);
     }
}
Imports Xunit

Public Class PersonTests
	 <Fact>
	 Public Sub GetPersonEmail_ReturnCorrectEmail()
		 ' Arrange
		 Dim service = New PersonService()
		 Dim expectedEmail As String = "Tom@email.com"

		 ' Create a person with specific name and email using NBuilder
		 Dim person = Builder(Of Person).CreateNew().With(Sub(p) p.Name = "Tom").With(Sub(p) p.Email = "Tom@email.com").Build()

		 ' Act
		 Dim actualEmail = service.GetPersonEmail(person)

		 ' Assert
		 Assert.Equal(expectedEmail, actualEmail)
	 End Sub
End Class
$vbLabelText   $csharpLabel

Bu birim testi, PersonService sınıfının GetPersonEmail yönteminin, "Tom@email.com" beklenen e-posta adresi ile bir Person nesnesinin e-posta adresini doğru bir şekilde döndürdüğünü doğrular. Test verilerini ayarlamak, yöntemi yürütmek ve ardından gerçek sonucun beklenen sonuçla eşleşip eşleşmediğini kontrol etmek için Düzenle-Yap-Doğrula modelini kullanır.

NBuilder'ı IronPDF ile Entegre Etme

IronPDF Hakkında Bilgi Edinin, .NET uygulamalarında HTML'den PDF Oluşturmak için tasarlanmış güçlü bir C# kütüphanesidir. Kullanıcı dostu API'si sayesinde geliştiriciler, projelerine PDF işlevselliğini sorunsuz bir şekilde entegre edebilir, ister faturalar, raporlar veya etkileşimli formlar üretiyor olsunlar.

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 7 - IronPDF

Installing IronPDF

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

Install-Package IronPdf

5 Kişi Nesneleri Listesini Doldur

// Generating instances of the Person class with NBuilder
var people = Builder<Person>.CreateListOfSize(5).Build();
// Generating instances of the Person class with NBuilder
var people = Builder<Person>.CreateListOfSize(5).Build();
' Generating instances of the Person class with NBuilder
Dim people = Builder(Of Person).CreateListOfSize(5).Build()
$vbLabelText   $csharpLabel

IronPDF Kullanarak PDF Belgesi Oluşturma

Bu kod, IronPDF lisans anahtarını belirler ve bir Kişi nesneleri listesinden HTML içerik üretir.

// Setting the IronPDF license key
IronPdf.License.LicenseKey = "Your-License-Key";

// Building HTML content from Person object list
var htmlContent = "<h1>Person List</h1>";
foreach (var person in people)
{
    htmlContent += $"<p>Id: {person.Id}, Name: {person.Name}, Email: {person.Email}, IsMarried: {person.IsMarried}</p>";
}
// Setting the IronPDF license key
IronPdf.License.LicenseKey = "Your-License-Key";

// Building HTML content from Person object list
var htmlContent = "<h1>Person List</h1>";
foreach (var person in people)
{
    htmlContent += $"<p>Id: {person.Id}, Name: {person.Name}, Email: {person.Email}, IsMarried: {person.IsMarried}</p>";
}
' Setting the IronPDF license key
IronPdf.License.LicenseKey = "Your-License-Key"

' Building HTML content from Person object list
Dim htmlContent = "<h1>Person List</h1>"
For Each person In people
	htmlContent &= $"<p>Id: {person.Id}, Name: {person.Name}, Email: {person.Email}, IsMarried: {person.IsMarried}</p>"
Next person
$vbLabelText   $csharpLabel

IronPDF'in özelliklerini etkinleştirmek için IronPdf.License.LicenseKey belirli bir lisans anahtarı ile ayarlanmıştır. HTML içerik, people listesinin üzerinden geçilerek her bir Person nesnesinin (Id, Name, Email, IsMarried) detaylarını HTML yapısına ekleyerek dinamik olarak oluşturulur.

IronPDF Kullanarak PDF Belgesinde Kişi Listesinin Görselleştirilmesi

Bu kod, IronPDF'in ChromePdfRenderer'ını kullanarak HTML içeriğini bir PDF belgesine dönüştürür.

// Rendering HTML content into a PDF document using IronPDF
var renderer = new ChromePdfRenderer();
var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent);
pdfDoc.SaveAs("PersonList.pdf");
// Rendering HTML content into a PDF document using IronPDF
var renderer = new ChromePdfRenderer();
var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent);
pdfDoc.SaveAs("PersonList.pdf");
' Rendering HTML content into a PDF document using IronPDF
Dim renderer = New ChromePdfRenderer()
Dim pdfDoc = renderer.RenderHtmlAsPdf(htmlContent)
pdfDoc.SaveAs("PersonList.pdf")
$vbLabelText   $csharpLabel

ChromePdfRenderer sınıfı, htmlContent depolanan HTML içeriğini bir PDF belgesine dönüştürmek için örneklenir. Elde edilen PDF belgesi, 'PersonList.pdf' adıyla dosya sistemine kaydedilir.

Çıktı

Aşağıda IronPDF tarafından oluşturulan PersonList'in çıktısı bulunmaktadır. Beş kişi içerir, her biri varsayılan değerlere sahiptir.

NBuilder .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 8 - PDF Çıktısı

Sonuç

Sonuç olarak, NBuilder, .NET'te test verisi oluşturma konusunda güçlü ve esnek bir araçtır ve karmaşık nesne grafiklerinin oluşturulmasını hızlandırarak test süreçlerinin verimliliğini artırır. IronPDF ile entegre ederek, geliştiriciler, projeleri için değerli bulanlar için PDF oluşturma yeteneklerini uygulamalarına kolayca ekleyebilirler. Birlikte, NBuilder ve IronPDF, geliştirme iş akışlarını önemli ölçüde artırabilir, test ve belge oluşturmayı sorunsuz ve verimli hale getirebilir.

Sıkça Sorulan Sorular

NBuilder kullanarak .NET'te test verisi nasıl oluşturabilirim?

NBuilder, geliştiricilere karmaşık nesne grafikleri ve test verilerini zahmetsizce oluşturma olanağı sunan bir akıcı arayüz sağlar. Tekil nesneler veya varsayılan ya da özel değerlere sahip nesne listeleri oluşturmak için CreateNew() ve CreateListOfSize() gibi yöntemleri kullanabilirsiniz.

.NET projesine NBuilder nasıl kurulur?

NBuilder'ı kurmak için, NuGet Paket Yöneticisi Konsolunu Install-Package NBuilder komutuyla kullanabilirsiniz. Bu, gerekli bağımlılıkları ile birlikte NBuilder'ı indirir ve kurar.

NBuilder rastgele ve ardışık veri üretmek için kullanılabilir mi?

Evet, NBuilder rastgele ve ardışık veri üretimini destekler. Rastgele değerler için With() gibi yöntemlerle nesne özelliklerini özelleştirebilir veya Do() kullanarak özellikleri ardışık olarak ayarlayabilirsiniz.

NBuilder ile IronPDF entegrasyonunun faydaları nelerdir?

NBuilder'ın IronPDF ile entegrasyonu, geliştiricilere karmaşık test verileri oluşturma ve bunları PDF olarak çıkış alma imkanı tanır. Bu, test verilerinden dinamik PDF oluşturmayı sağlayarak, .NET uygulamalarındaki geliştirme iş akışlarını daha verimli hale getirir.

NBuilder birim testlerinde nasıl yardımcı olur?

NBuilder, geliştiricilere gerçekçi test verilerini hızlıca oluşturma imkânı tanıyarak birim testlerinde değerli birer araçtır. Karmaşık nesne grafikleri ile test senaryolarının kurulmasını basitleştirir, bu da testleri daha sürdürülebilir ve etkili hale getirir.

NBuilder'da akıcı bir arayüz kullanmanın avantajı nedir?

NBuilder'daki akıcı arayüz, geliştiricilere karmaşık nesne grafikleri oluştururken yöntem çağrılarını zincirlemelerini sağlar, bu da kodun okunabilirliğini ve özlü olmasını artırır. Bu, test verisi oluştururken tekrarlı kodu azaltır.

NBuilder ile bir nesne listesi nasıl oluşturabilirim?

NBuilder'ın CreateListOfSize() yöntemini kullanarak bir nesne listesi oluşturabilirsiniz. Örneğin, Builder.CreateListOfSize(10).Build() 10 Person nesnesinden oluşan bir liste oluşturur.

NBuilder kullanırken bazı sorun giderme ipuçları nelerdir?

NBuilder'ın doğru şekilde NuGet üzerinden kurulduğundan emin olun ve proje referanslarınızın güncel olduğunu doğrulayın. Sorunlarla karşılaşırsanız, NBuilder'ın GitHub deposunu ya da topluluk forumlarını kontrol etmek faydalı bilgiler ve çözümler sağlayabilir.

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 ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara