.NETヘルプ NBuilder .NET(開発者向けの動作方法) Jacob Mellor 更新日:6月 22, 2025 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる ジェミニで開く このページについてGeminiに問い合わせる 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る NBuilderはテストデータ生成を簡素化する.NETライブラリです。 開発者は流暢なインターフェイスで複雑なオブジェクトグラフを簡単に作成できます。 人気のあるテスティングフレームワークとシームレスに統合された柔軟性、効率性を提供します。 この記事では、NBuilderの特徴、そのインストール方法、実際のコード例を通じてその機能を探ります。 NBuilderの特徴 NBuilderはテストやモックの目的でオブジェクトの作成を簡素化するために設計されたC#のオープンソース.NETライブラリです。 開発者は異なるデータ型に基づいたデフォルトまたはカスタム指定の入力でオブジェクトを素早く生成できます。 単体テスト、機能テスト、統合テストに特に役立ちます。 .NET組み込みデータ型や複雑なオブジェクトをテストするための不可欠なパッケージのひとつです。 ランダムデータ生成に使用されます。 このオープンソースプロジェクトに貢献できます。 NBuilderを使用することで、デフォルトのプロパティを簡単にオーバーライドし、カスタム設定を記述できます。 NBuilderのインストール NuGetパッケージ管理コンソールでNBuilderをインストールするには、次のコマンドを使用します。 Install-Package NBuilder 上記のコマンドにより、すべての依存関係とともにNBuilderがインストールされます。 NBuilderの使用方法 NBuilderはオブジェクトを即座に作成するための流暢な方法を提供します。 まず、オブジェクトを作成するシンプルな例から始めましょう。 こちらはPerson Modelクラスのソースコードです。 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 例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 // 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 サンプル画像 例2:カスタムビルダーを使用したオブジェクトの作成 こちらはカスタムプロパティを持つPersonオブジェクトを作成・設定するために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(); ' 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 上記のコードはカスタムプロパティを持つ新しい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(); // 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 サンプル画像 ここでは、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}"); } ' 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 例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(); ' 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 これにより、各オブジェクトがデフォルト値をオーバーライドし、Name = "Kim"、Email = "abc@email.com"、IsMarried = falseに設定されたpersonListが作成されます。 例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(); // 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 例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(); // 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 ここで、All()メソッドはメモリ内で作成された10個のPersonオブジェクトすべてにサポートする操作を適用することを保証します。 Do()メソッドは各PersonオブジェクトにActionデリゲートを実行します。 このセットアップでIdプロパティが501から始まる連続値で割り当てられ、Personの名前が"Person 1"から"Person 10"まで連続的に名付けられます。 例7:Xunitを使用した単体テストでのNBuilder .NET内でのNBuilderは特にテスト環境で広く使用され、開発者がテストのためにリアルで多様なデータを生成する必要がある場合に利用されます。 複雑なオブジェクトでテストを簡単かつ保守しやすくし、開発者が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; } } 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 ここで、PersonクラスにはId、Name、Email、IsMarriedなどのいくつかのプロパティがあり、PersonServiceには指定されたPersonのメールアドレスを返すGetPersonEmail()というメソッドがあります。 テストクラスとテストデータ 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 この単体テストはPersonServiceクラスのGetPersonEmailメソッドがPersonオブジェクトの期待されるメールアドレス"Tom@email.com"を正確に返すことを確認します。 Arrange-Act-Assertパターンを使用してテストデータを設定し、メソッドを実行し、その後、実際の結果が期待される結果と一致していることを確認します。 NBuilderとIronPDFの統合 IronPDFについて学ぶは.NETアプリケーション内でHTMLからPDFを作成するために設計された強力なC#ライブラリです。 その直感的なAPIを通じて、開発者は請求書、レポート、インタラクティブなフォームを生成するかどうかに関係なく、自分のプロジェクトにシームレスにPDF機能を統合できます。 IronPDFのインストール NuGetパッケージ管理コンソールを開き、次のコマンドを実行します。 Install-Package IronPdf 5つのPersonオブジェクトのリストを生成する // 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を使用した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>"; } // 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.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"); // 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に保存されたHTMLコンテンツをPDFドキュメントにレンダリングするためにインスタンス化されます。 結果のPDFドキュメントは"PersonList.pdf"としてファイルシステムに保存されます。 出力 以下はIronPDFによって生成されたPersonListの出力です。 デフォルト値を持つ5人が含まれています。 結論 結論として、NBuilderは.NETでのテストデータ生成のための強力で柔軟なツールであり、複雑なオブジェクトグラフの作成を合理化し、テストプロセスの効率を向上させます。 IronPDFと統合することで、開発者はプロジェクトにとって価値があると感じる人々のために、PDF生成機能をアプリケーションに簡単に拡張できます。 NBuilderとIronPDFを組み合わせることで、開発ワークフローが大幅に向上し、テストとドキュメント生成がシームレスかつ効率的になります。 よくある質問 NBuilder を使用して .NET でテスト データを生成する方法は? 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 の使用に関するトラブルシューティングのヒントを教えてください。 NBuilder が NuGet 経由で正しくインストールされ、プロジェクト参照が最新であることを確認してください。 問題が発生した場合は、NBuilder GitHub リポジトリまたはコミュニティ フォーラムを確認すると、有益な洞察や解決策が得られる場合があります。 Jacob Mellor 今すぐエンジニアリングチームとチャット 最高技術責任者(CTO) Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。 関連する記事 更新日 12月 11, 2025 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む 更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む Refit C#(開発者向けの動作方法)C# TryParse(開発者向けの動...
更新日 12月 11, 2025 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む
更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む