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'in Özellikleri
- 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.
- Özellikle birim testi, fonksiyonel test ve entegrasyon testi için uygundur.
- Yerleşik .NET veri türlerini ve karmaşık nesneleri test etmek için en temel paketlerden biridir.
- Rastgele veri üretimi için kullanılır. Bu açık kaynak projeye katkıda bulunabilirsiniz.
- 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'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
Ö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
Örnek Görüntü

Ö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()
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()
Örnek Görüntü

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

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

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

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

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




