IRONSOFTWAREHOME
開發者更新

NBuilder .NET(對於開發者的運行原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

NBuilder 是一個 .NET 程式庫,簡化測試資料生成。 開發者可以藉由其流暢介面輕鬆建立複雜的物件圖。 它提供靈活性、高效性,並能與流行的測試框架無縫整合。 在本文中,我們將探索NBuilder的功能,如何安裝它,並透過實際的程式碼範例展示其能力。

NBuilder .NET(開發者如何運作):圖1 - NBuilder

NBuilder的功能

  1. NBuilder 是一個 C# 開源 .NET 程式庫,旨在簡化用於測試和模擬目的的物件建立。 它允許開發者根據不同的資料型別快速生成具有預設或自訂輸入的物件。
  2. 尤其適用於單元測試、功能測試和整合測試。
  3. 它是用於測試內建 .NET 資料型別和複雜物件的基本套件之一。
  4. 它用於隨機資料生成。 您可以貢獻到這個開源專案。
  5. 使用 NBuilder,您可以輕鬆覆蓋預設屬性並撰寫自訂配置。

安裝 NBuilder

要在 NuGet 套件管理器控制台中安裝 NBuilder,請使用以下命令。

PM > Install-Package NBuilder

上述命令將安裝NBuilder及其所有依賴項。

NBuilder .NET(開發者如何運作):圖2 - 安裝 NBuilder

NBuilder 的用法

NBuilder 提供了一種即時建立物件的流暢方式。 讓我們從一個簡單的建立物件例子開始。

以下是 Person Model Class 的原始碼。

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

範例1:建立具有預設值的 Person 物件

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

範例圖片

NBuilder .NET(開發者如何運作):圖3 - 帶有值的 Person 物件

範例2:使用自定義生成器建立物件

這是一個如何使用 NBuilder 建立和配置具有自定義屬性的 Person 物件的範例:

// 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();

以上程式碼建立了一個具有自定義屬性的 Person 物件。 它為 Person 物件初始化了一個 customPersonBuilder,將 Name 設為"Tom",Email 設為"Tom@email.com"。 最後,它構建該物件並將其指派給 objTom。

範例3:建立具有預設值的 Person 物件清單

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

範例圖片

NBuilder .NET(開發者如何運作):圖4 - Person 物件清單

personList 有 10 個具有其預設值的物件並列印它們。

// 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}");
}

NBuilder .NET(開發者如何運作):圖5 - 自動分配值

範例4:自定義生成的物件

有時您可能需要自定義正在建立的物件。 您也可以使用 With() 方法自定義物件的值。

// 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();

這會建立一個 personList,每個物件的預設值都會被覆蓋為 Name = "Kim",Email = "abc@email.com",和 IsMarried = false。

範例5:建立具有現實隨機資料的 Person 物件清單

為了在 Person List 中獲得真實的資料值,您可以使用 Faker Library .NET 來生成真實資料。

// 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();

範例6:建立具有順序資料的 Person 物件清單

有時您可能需要生成具有順序資料的物件。 NBuilder .NET 利用 Do 方法促成這一點。

// 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();

在這裡,All() 方法確保後續操作應用於所有建立在記憶體中的 10 個 person 物件。 Do() 方法在每個 Person 物件上執行 Action 委託。 此設置依次從501開始分配 Id 屬性,並同樣按順序將每個人命名為"Person 1"到"Person 10"。

NBuilder .NET(開發者如何運作):圖6 - 順序資料

範例7:在單元測試中使用 Xunit 的 NBuilder

NBuilder 在 .NET 中被廣泛用於測試環境中,開發者需要生成真實且多樣化的資料集以供測試。 它使測試變得簡便且可維護,配合複雜物件,讓開發者可使用 lambda 表達式和委託函式,為那些對高效及靈活測試資料生成感興趣的人預設自定義初始化邏輯。

單元測試的模型類與服務

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;
    }
}

在這裡,Person 類有多個屬性,包括 Email 和 IsMarried,而 PersonService 包含一個方法 GetPersonEmail(),它返回所給 Person 的 email。

測試類與測試資料

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);
     }
}

此單元測試驗證 GetPersonEmail 類的 PersonService 方法是否會正確返回 Person 物件預期的 email 地址"Tom@email.com"。 它使用 Arrange-Act-Assert 模式來設置測試資料、執行方法,然後檢查實際結果是否與預期結果匹配。

將 NBuilder 與 IronPDF 整合

了解關於 IronPDF 是一個強大的 C# 程式庫,旨在 在 .NET 應用程式中從 HTML 製作 PDF。 憑藉直觀的 API,開發者可以輕鬆地將 PDF 功能整合到他們的專案中,無論是生成發票、報告還是互動表單。

NBuilder .NET(開發者如何運作):圖7 - IronPDF

安裝 IronPDF

打開 NuGet 套件管理器控制台,然後執行以下命令:

PM > Install-Package IronPdf

填充 5 個 Person 物件的清單

// Generating instances of the Person class with NBuilder
var people = Builder<Person>.CreateListOfSize(5).Build();

使用 IronPDF 建立 PDF 文件

此程式碼設置 IronPDF 授權金鑰並從 Person 物件清單生成 HTML 內容。

// 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>";
}

IronPdf.License.LicenseKey 被設置為特定的授權金鑰以啟用 IronPDF 的功能。 HTML 內容透過迭代 people 清單動態建構,將每個 Person 物件的詳細資訊(Id、Name、Email、IsMarried)附加到 HTML 結構中。

使用 IronPDF 在 PDF 文件中呈現 Person 清單

此程式碼使用 IronPDF 的 ChromePdfRenderer 將 HTML 內容轉換為 PDF 文件。

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

ChromePdfRenderer 被實例化以將儲存在 htmlContent 的 HTML 內容呈現到 PDF 文件中。 生成的 PDF 文件儲存到文件系統中,名為"PersonList.pdf"。

輸出

以下是 IronPDF 生成的 PersonList 輸出。 它包含五個人,每個人都有預設值。

NBuilder .NET(開發者如何運作):圖8 - PDF 輸出

結論

總之,NBuilder 是一個強大且靈活的工具,用於在 .NET 中生成測試資料,簡化複雜物件圖的建立,並提高測試流程的效率。 透過與 IronPDF 整合,開發者可以輕鬆將其應用程式擴展為具有 PDF 生成功能,這對於專案中需要該功能的人是有價值的。 NBuilder 與 IronPDF 一起可以顯著增強開發工作流程,使測試和文件生成變得無縫且高效。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起