.NET 帮助 NBuilder .NET(开发人员如何使用) Jacob Mellor 已更新:2025年6月22日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 NBuilder 是一个简化测试数据生成的 .NET 库。 开发人员可以通过其流畅的接口轻松创建复杂的对象图。 它提供灵活性、效率,并与流行的测试框架无缝集成。 在本文中,我们将探讨 NBuilder 的功能、如何安装它,并通过实际代码示例演示其功能。 NBuilder 的功能 NBuilder 是一个 C# 开源 .NET 库,旨在简化对象的创建以进行测试和模拟用途。 它允许开发人员快速生成基于不同数据类型的默认或自定义输入的对象。 对于单元测试、功能测试和集成测试特别有用。 它是测试内置 .NET 数据类型和复杂对象的基本包之一。 它用于随机数据生成。 您可以为此开源项目做出贡献。 使用 NBuilder,您可以轻松覆盖默认属性并编写自定义配置。 安装 NBuilder 要在 NuGet 包管理器控制台中安装 NBuilder,请使用以下命令。 Install-Package NBuilder 上述命令将安装 NBuilder 及其所有依赖项。 NBuilder 的使用 NBuilder 提供了一种动态创建对象的流畅方式。 让我们从一个创建对象的简单示例开始。 这是人员模型类的源代码。 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; } } $vbLabelText $csharpLabel 示例 1:创建具有默认值的人员对象 // 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 $vbLabelText $csharpLabel 示例图像 示例 2:使用自定义生成器创建对象 这是如何使用 NBuilder 创建和配置具有自定义属性的人员对象的示例: // 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(); $vbLabelText $csharpLabel 上述代码创建了一个具有自定义属性的新人员对象。 它为人员对象初始化了一个 customPersonBuilder,并将 Name 设置为"Tom",Email 设置为"Tom@email.com"。 最后,它构建对象并将其分配给 objTom。 示例 3:创建具有默认值的人员对象列表 // 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(); $vbLabelText $csharpLabel 示例图像 这里 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}"); } // 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}"); } $vbLabelText $csharpLabel 示例 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(); // 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(); $vbLabelText $csharpLabel 这将创建一个personList,每个对象的默认值被重写为Name = "Kim",Email = "abc@email.com",和IsMarried = false。 示例 5:创建具有真实随机数据的人员对象列表 为了在人员列表中获得真实的数据值,您可以使用 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(); // 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(); $vbLabelText $csharpLabel 示例 6:创建具有顺序数据的人员对象列表 有时您可能需要生成具有顺序数据的对象。 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(); // 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(); $vbLabelText $csharpLabel 在这里,All()方法确保后续操作应用于内存中创建的所有10个Person对象。 Action委托。 此设置顺序地从501开始分配Id属性,并以相同方式将每个人顺序命名为"Person 1"到"Person 10"。 示例 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; } } 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; } } $vbLabelText $csharpLabel 在这里,Id, Name, Email, 和Person的电子邮件。 测试类和测试数据 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); } } $vbLabelText $csharpLabel 此单元测试验证Person对象的电子邮件地址。 它使用 Arrange-Act-Assert 模式来设置测试数据,执行方法,然后检查实际结果是否与预期结果匹配。 将 NBuilder 与 IronPDF 集成 了解 IronPDF 是一个强大的 C# 库,专为在 .NET 应用程序中从 HTML 创建 PDF而设计。 通过其直观的 API,开发人员可以无缝地将 PDF 功能集成到他们的项目中,无论是正在生成发票、报告还是交互式表单。 安装 IronPDF 打开 NuGet 包管理器控制台,并运行以下命令: Install-Package IronPdf 填充 5 个人员对象的列表 // 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(); $vbLabelText $csharpLabel 使用 IronPDF 创建 PDF 文档 此代码设置 IronPDF 许可证密钥并从人员对象列表生成 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>"; } // 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>"; } $vbLabelText $csharpLabel IronPdf.License.LicenseKey设置了特定的许可证密钥以启用IronPDF的功能。 通过遍历Person对象的详细信息(Id, Name, Email, IsMarried)附加到HTML结构中。 使用 IronPDF 在 PDF 文档中渲染人员列表 此代码使用 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"); // Rendering HTML content into a PDF document using IronPDF var renderer = new ChromePdfRenderer(); var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent); pdfDoc.SaveAs("PersonList.pdf"); $vbLabelText $csharpLabel ChromePdfRenderer被实例化以将存储在htmlContent中的HTML内容渲染为PDF文档。 生成的 PDF 文档被保存到文件系统中,文件名为"PersonList.pdf"。 输出 以下是由 IronPDF 生成的 PersonList 的输出。 它包含五个人,每个人都有默认值。 结论 总之,NBuilder 是一个强大且灵活的工具,用于在 .NET 中生成测试数据,简化复杂对象图的创建,并提高测试过程的效率。 通过与 IronPDF 集成,开发人员可以轻松扩展他们的应用程序,包括PDF 生成功能,对于那些对他们的项目数据支持有价值的人来说。 NBuilder 和 IronPDF 一起可以显著增强开发工作流,使测试和文档生成更加顺畅和高效。 常见问题解答 如何在.NET中使用NBuilder生成测试数据? NBuilder提供了一个流畅的接口,允许开发人员轻松生成复杂的对象图和测试数据。您可以使用CreateNew()和CreateListOfSize()等方法生成具有默认或自定义值的单个对象或对象列表。 如何在.NET项目中安装NBuilder? 要安装NBuilder,您可以使用NuGet包管理器控制台命令:Install-Package NBuilder。这将下载并安装NBuilder及其必要的依赖项。 NBuilder可以用于生成随机和顺序数据吗? 是的,NBuilder支持生成随机和顺序数据。您可以使用With()方法自定义对象属性以获取随机值,或使用Do()方法顺序设置属性。 将NBuilder与IronPDF集成的好处是什么? 将NBuilder与IronPDF集成允许开发人员创建复杂的测试数据并将其作为PDF输出。这可以通过从测试数据动态生成PDF来增强.NET应用程序,从而简化开发工作流程。 NBuilder如何协助单元测试? NBuilder在单元测试中很有价值,它允许开发人员快速生成逼真的测试数据。它简化了带有复杂对象图的测试场景的设置,使测试更具可维护性和效果。 在NBuilder中使用流畅接口的优势是什么? NBuilder中的流畅接口允许开发人员以可读且简洁的方式链接方法调用以创建复杂的对象图。这提高了代码清晰度并减少了生成测试数据的样板代码。 如何使用NBuilder创建对象列表? 您可以使用NBuilder的CreateListOfSize()方法创建对象列表。例如,Builder.CreateListOfSize(10).Build()生成10个Person对象的列表。 使用NBuilder的一些故障排除技巧是什么? 确保通过NuGet正确安装了NBuilder,并验证您的项目引用是否是最新的。如果您遇到问题,查看NBuilder GitHub存储库或社区论坛可能会提供有用的见解和解决方案。 Jacob Mellor 立即与工程团队聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。 相关文章 已更新2026年2月20日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多 已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新2025年12月20日 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 Refit C#(开发人员如何使用)C# TryParse(开发人员如何使...
已更新2026年2月20日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多
已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多