
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'ın Özellikleri
- 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.
- Özellikle birim testleri, fonksiyonel testler ve entegrasyon testleri için faydalıdır.
- Gömülü .NET veri türleri ve karmaşık nesneler için testlerin vazgeçilmez paketlerinden biridir.
- Rastgele veri üretimi için kullanılır. Bu açık kaynak projeye katkıda bulunabilirsiniz.
- 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.
Yukarıdaki komut, NBuilder'ı tüm bağımlılıklarıyla birlikte kuracaktır.

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; }
}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Ö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
Dim person = Builder(Of Person) .CreateNew().Build()
' By default, NBuilder can provide values like
' Id = 1, Name = Name1, Email = Email1, IsMarried = falseÖrnek Görüntü

Ö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
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()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
Dim personList = Builder(Of Person) .CreateListOfSize(10).Build()Örnek Görüntü

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
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
Ö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
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()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
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()Ö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
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()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.

Ö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;
}
}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 ClassBurada, 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);
}
}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(Function(p) p.Name = "Tom") _
.With(Function(p) p.Email = "Tom@email.com") _
.Build()
' Act
Dim actualEmail = service.GetPersonEmail(person)
' Assert
Assert.Equal(expectedEmail, actualEmail)
End Sub
End ClassBu 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.

Installing IronPDF
NuGet Package Manager konsolunu açın ve şu komutu çalıştırın:
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
Dim people = Builder(Of Person).CreateListOfSize(5).Build()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
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 personIronPDF'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
Dim renderer = New ChromePdfRenderer()
Dim pdfDoc = renderer.RenderHtmlAsPdf(htmlContent)
pdfDoc.SaveAs("PersonList.pdf")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.

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.

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.
İlgili Makaleler


