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

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

NBuilder .NET kütüphanesi, test verileri oluşturmayı basitleştirir. Geliştiriciler, şekilsen arayüzü ile karmaşık nesne grafiklerini zahmetsizce oluşturabilir. Esneklik, verimlilik ve popüler test çerçeveleriyle sorunsuz entegrasyon sunar. Bu makalede, NBuilder'in özelliklerini, nasıl kurulacağını keşfedecek ve pratik kod örnekleriyle yeteneklerini göstereceğiz.

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

NBuilder'in Özellikleri

  1. NBuilder, test ve taklit etme amaçları için nesne oluşturmayı basitleştirmek üzere tasarlanmış bir C# açık kaynak .NET kütüphanesidir. Geliştiricilerin farklı veri türlerine göre varsayılan veya özel belirli girişlerle hızla nesneler oluşturmasına olanak tanır.
  2. Özellikle birim testi, fonksiyonel test ve entegrasyon testi için uygundur.
  3. Yerleşik .NET veri türlerini ve karmaşık nesneleri test etmek için en temel paketlerden biridir.
  4. Rastgele veri üretimi için kullanılır. Bu açık kaynak projeye katkıda bulunabilirsiniz.
  5. NBuilder ile varsayılan özellikleri kolayca geçersiz kılabilir ve özel yapılandırmalar yazabilirsiniz.

NBuilder'i Kurma

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

Install-Package NBuilder

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

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

NBuilder'in Kullanımı

NBuilder, nesneleri anında oluşturmanın akıcı bir yolunu sunar. İşte basit bir nesne oluşturma örneğiyle başlayalım.

İşte Kişi Model Sınıfı 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 Bir 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 Kişi Nesnesi

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

NBuilder'i, özel özelliklere sahip bir Kişi nesnesi oluşturup yapılandırmak için nasıl kullanacağınızı gösteren bir örnek burada:

// 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 özelliklere sahip yeni bir Kişi nesnesi oluşturur. Bir Kişi nesnesi için bir customPersonBuilder başlatır, Adı "Tom" ve E-postayı "Tom@email.com" olarak ayarlar. Son olarak, nesneyi oluşturur ve objTom'a atar.

Örnek 3: Varsayılan Değerlerle Bir 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 birlikte 10 nesne içerir ve bunları 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şturulan nesneleri özelleştirmeniz gerekebilir. Bir nesnenin değerini With() metodu 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, her nesnenin varsayılan değerinin Name = "Kim", Email = "abc@email.com" ve IsMarried = false olacak şekilde değiştirildiği bir personList oluşturur.

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

Kişi Listesinde gerçekçi veri değerleri elde etmek için, gerçekçi veriler üretmek amacıyla Faker Kütüphanesi .NET'i kullanabilirsiniz.

// 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: Ardışık Verilerle Bir Kişi Nesne Listesi Oluşturma

Zaman zaman ardışık veri içeren nesneler oluşturmanız gerekebilir. NBuilder .NET, bunu Do metodu 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() metodu, bellekte oluşturulan tüm 10 kişi nesnesine sonrasındaki işlemlerin uygulanacağını sağlar. Do() metodu, her Person nesnesi üzerinde Action delegesi uygular. Bu ayar, Id özelliğini 501'den başlayarak sırayla atar ve benzer şekilde, her kişiye "Kişi 1"'den "Kişi 10"'a kadar isimler verir.

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

Örnek 7: Xunit Kullanarak Birim Testi ile NBuilder

.NET'te NBuilder, geliştiricilerin test için gerçekçi ve çeşitli bir veri seti oluşturması gerektiğinde, test ortamlarında önemli ölçüde kullanılır. Çoğu zaman karmaşık nesneleri için lambda ifadeleri ve bunlara uygun işlevlerle özel başlatma mantığı tanımlayarak verimli ve esnek test verisi üretimini kolay ve sürdürülebilir hale getirir.

Birim Testi için Model Sınıfı ve Hizmet

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 birçok özelliğe sahiptir; oysa PersonService, belirli bir Person'ın e-postasını döndüren bir GetPersonEmail() metodu içerir.

Test Sınıfları ve Test Verileri

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 metodunun, beklenen e-posta "Tom@email.com" ile bir Person nesnesinin doğru e-posta adresini döndürdüğünü doğrular. Test verilerini ayarlamak, metodu yürütmek ve ardından gerçek sonucun beklenen sonuçla eşleştiğini kontrol etmek için Arrange-Act-Assert modeli kullanılır.

NBuilder'i IronPDF ile Entegre Etme

IronPDF Hakkında Bilgi Edinin .NET uygulamaları içinde HTML'den PDF oluşturmak için tasarlanmış güçlü bir C# kütüphanesidir. Kullanıcı dostu API'si ile geliştiriciler projelerine PDF işlevselliğini sorunsuz bir şekilde entegre edebilir, ister fatura, rapor ya da etkileşimli formlar oluşturuyor olsunlar.

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

IronPDF Kurulumu

NuGet Paket Yöneticisi konsolunu açın ve aşağıdaki komutu çalıştırın:

Install-Package IronPdf

5 Kişi Nesnesi Listesini Doldurma

// 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ı ayarlar ve Kişi nesnesi listesinden HTML içerik oluşturur.

// 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 özelliklerini etkinleştirmek için IronPdf.License.LicenseKey belirli bir lisans anahtarı ile ayarlanmıştır. HTML içeriği, people listesini yineleyerek dinamik olarak oluşturulur ve her Person nesnesinin ayrıntılarını (Id, Name, Email, IsMarried) HTML yapısına ekler.

Kişi Listesini PDF Belgesinde IronPDF Kullanarak Oluşturma

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, htmlContent içinde saklanan HTML içeriğini bir PDF belgesine dönüştürmek için örneklendirilir. Elde edilen PDF belgesi dosya sistemine "PersonList.pdf" adıyla kaydedilir.

Çıktı

Aşağıda IronPDF tarafından oluşturulan PersonList'in çıktısı bulunmaktadır. Bu, varsayılan değerlerle beş kişiyi içerir.

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

Sonuç

Sonuç olarak, NBuilder, .NET'te test verisi üretmek için güçlü ve esnek bir araçtır. Karmaşık nesne grafiklerinin oluşturulmasını hızlandırır ve test süreçlerinin verimliliğini artırır. IronPDF ile entegre edilerek geliştiriciler uygulamalarını kolayca PDF oluşturma yeteneklerini dahil edebilirler ve projeleri için değerli olduğunu düşünenler için. Birlikte, NBuilder ve IronPDF geliştirme iş akışlarını önemli ölçüde artırabilir, test ve belge oluşturmayı kesintisiz 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 verileri oluşturma olanağı tanıyan bir akıcı arayüz sunar. CreateNew() ve CreateListOfSize() gibi yöntemleri kullanarak, varsayılan ya da özel değerlerle tekli nesneler veya nesne listeleri oluşturabilirsiniz.

.NET projesine NBuilder nasıl yüklenir?

NBuilder'i yüklemek için NuGet Paket Yöneticisi Konsolu'nda şu komutu kullanabilirsiniz: Install-Package NBuilder. Bu, gerekli bağımlılıklarla birlikte NBuilder'i indirip kuracaktır.

NBuilder rastgele ve ardışık veri oluşturabilir mi?

Evet, NBuilder hem rastgele hem de ardışık veri oluşturmayı destekler. Nesne özelliklerini rastgele değerler için With() yöntemini kullanarak özelleştirebilir veya ardışık olarak ayarlamak için Do() kullanabilirsiniz.

NBuilder ve IronPDF entegrasyonunun faydaları nelerdir?

NBuilder'i IronPDF ile entegre etmek, geliştiricilere karmaşık test verileri oluşturup bunları PDF olarak çıktı alma imkanı tanır. Bu, .NET uygulamalarını test verilerinden dinamik PDF üretmeye olanak tanıyarak, geliştirme iş akışlarını kolaylaştırabilir.

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

NBuilder, geliştirdiği ile gerçekçi test verileri hızla oluşturmayı mümkün kılan birim testlerinde değerlidir. Karmaşık nesne grafikleriyle test senaryolarının kurulumunu basitleştirir, 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şturma sürecinde metod çağrılarını zincirleme imkanı tanır, bu da kodun okunabilirliğini artırır ve test verisi oluştururken gereksiz 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 nesnelik bir liste oluşturur.

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

NBuilder'in NuGet üzerinden doğru şekilde yüklendiğinden emin olun ve proje referanslarınızın güncel olduğundan emin olun. Sorunlarla karşılaşırsanız, NBuilder GitHub depo veya topluluk forumlarını kontrol etmek yararlı bilgiler ve çözümler sağlayabilir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

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