フッターコンテンツにスキップ
.NETヘルプ

NBuilder .NET(開発者向けの動作方法)

NBuilder is a .NETライブラリです。 開発者は流暢なインターフェイスで複雑なオブジェクトグラフを簡単に作成できます。 人気のあるテスティングフレームワークとシームレスに統合された柔軟性、効率性を提供します。 この記事では、NBuilderの特徴、そのインストール方法、実際のコード例を通じてその機能を探ります。

NBuilder .NET(開発者向けの動作方法):図1 - NBuilder

NBuilderの特徴

  1. NBuilderはテストやモックの目的でオブジェクトの作成を簡素化するために設計されたC#のオープンソース.NETライブラリです。 開発者は異なるデータ型に基づいたデフォルトまたはカスタム指定の入力でオブジェクトを素早く生成できます。
  2. 単体テスト、機能テスト、統合テストに特に役立ちます。
  3. .NET組み込みデータ型や複雑なオブジェクトをテストするための不可欠なパッケージのひとつです。
  4. ランダムデータ生成に使用されます。 このオープンソースプロジェクトに貢献できます。
  5. NBuilderを使用することで、デフォルトのプロパティを簡単にオーバーライドし、カスタム設定を記述できます。

NBuilderのインストール

NuGetパッケージ管理コンソールでNBuilderをインストールするには、次のコマンドを使用します。

Install-Package NBuilder

上記のコマンドにより、すべての依存関係とともにNBuilderがインストールされます。

NBuilder .NET(開発者向けの動作方法):図2 - 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](/static-assets/barcode/how-to/async-multithread/sample2.webp) ![NBuilder .NET(開発者向けの動作方法):図3 - 値を持つPersonオブジェクト](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-3.webp) #### 例2:カスタムビルダーを使用したオブジェクトの作成 こちらはカスタムプロパティを持つPersonオブジェクトを作成・設定するためにNBuilderを使用する方法の例です。 ```csharp // Initialize a custom builder for the Person object with specific values var customPersonBuilder = Builder.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オブジェクトリストの作成 ```csharp // Create a list of 10 Person objects with default values using NBuilder var personList = Builder .CreateListOfSize(10) .Build(); ```
![画像2](/static-assets/barcode/how-to/async-multithread/sample2.webp) ![NBuilder .NET(開発者向けの動作方法):図4 - Personオブジェクトリスト](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-4.webp) ここでは、personListは10個のオブジェクトをデフォルトの値で持ち、それらを出力します。 ```csharp // Creating a list of 10 Person objects with default values var personList = Builder .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 - 自動的に値を割り当てる](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-5.webp) #### 例4:生成されたオブジェクトのカスタマイズ 作成されたオブジェクトをカスタマイズする必要がある場合もあります。 `With()`メソッドを使用してオブジェクトの値もカスタマイズできます。 ```csharp // Customize properties for all Person objects in the list var personList = Builder .CreateListOfSize(10) .All() .With(p => p.Name = "Kim") .With(p => p.Email = "abc@email.com") .With(p => p.IsMarried = false) .Build(); ``` これにより、各オブジェクトがデフォルト値をオーバーライドし、Name = "Kim"、Email = "abc@email.com"、IsMarried = falseに設定された`personList`が作成されます。 #### 例5:リアルなランダムデータを使用したPersonオブジェクトリストの作成 Person Listでリアルなデータ値を得るために、Faker Library .NETを使用してリアルなデータを生成できます。 ```csharp // Creating a list of Person objects with random yet realistic values using Faker var personList = Builder .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**メソッドを使用してこれをサポートします。 ```csharp // Creating a list of 10 sequential Person objects using NBuilder var personList = Builder.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`デリゲートを実行します。 このセットアップで`Id`プロパティが501から始まる連続値で割り当てられ、Personの名前が"Person 1"から"Person 10"まで連続的に名付けられます。 ![NBuilder .NET(開発者向けの動作方法):図6 - 連続データ](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-6.webp) **例7:Xunitを使用した単体テストでのNBuilder** .NET内でのNBuilderは特にテスト環境で広く使用され、開発者がテストのためにリアルで多様なデータを生成する必要がある場合に利用されます。 複雑なオブジェクトでテストを簡単かつ保守しやすくし、開発者がlambda式やデリゲート関数を使用してカスタム初期化ロジックを定義することが可能で、効率的かつ柔軟なテストデータ生成に興味のある人々に対応できます。 #### 単体テストのためのモデルクラスとサービス ```csharp 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`クラスには`Id`、`Name`、`Email`、`IsMarried`などのいくつかのプロパティがあり、`PersonService`には指定された`Person`のメールアドレスを返す`GetPersonEmail()`というメソッドがあります。 #### テストクラスとテストデータ ```csharp 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.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); } } ``` この単体テストは`PersonService`クラスの`GetPersonEmail`メソッドが`Person`オブジェクトの期待されるメールアドレス"Tom@email.com"を正確に返すことを確認します。 Arrange-Act-Assertパターンを使用してテストデータを設定し、メソッドを実行し、その後、実際の結果が期待される結果と一致していることを確認します。 ## NBuilderとIronPDFの統合 [Learn About IronPDF](/) is a powerful C# library designed for [HTMLからPDFを作成](/tutorials/html-to-pdf/)するために設計された強力なC#ライブラリです。 その直感的なAPIを通じて、開発者は請求書、レポート、インタラクティブなフォームを生成するかどうかに関係なく、自分のプロジェクトにシームレスにPDF機能を統合できます。 ![NBuilder .NET(開発者向けの動作方法):図7 - IronPDF](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-7.webp) ### IronPDFのインストール NuGetパッケージ管理コンソールを開き、次のコマンドを実行します。 ```shell :ProductInstall ``` #### 5つのPersonオブジェクトのリストを生成する ```csharp // Generating instances of the Person class with NBuilder var people = Builder.CreateListOfSize(5).Build(); ``` #### IronPDFを使用したPDFドキュメントの作成 このコードはIronPDFのライセンスキーを設定し、PersonオブジェクトのリストからHTMLコンテンツを生成します。 ```csharp // Setting the IronPDF license key IronPdf.License.LicenseKey = "Your-License-Key"; // Building HTML content from Person object list var htmlContent = "

Person List

"; foreach (var person in people) { htmlContent += $"

Id: {person.Id}, Name: {person.Name}, Email: {person.Email}, IsMarried: {person.IsMarried}

"; } ``` `IronPdf.License.LicenseKey`が特定のライセンスキーで設定され、IronPDFの機能を有効にします。 HTMLコンテンツは`people`リストを反復処理し、各`Person`オブジェクトの詳細(Id、Name、Email、IsMarried)をHTML構造に追加することによって動的に構築されます。 #### IronPDFを使用してPDFドキュメントにPersonリストをレンダリングする このコードはIronPDFの**ChromePdfRenderer**を使用してHTMLコンテンツをPDFドキュメントに変換します。 ```csharp // 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の出力です。 デフォルト値を持つ5人が含まれています。 ![NBuilder .NET(開発者向けの動作方法):図8 - PDF出力](/static-assets/pdf/blog/nbuilder-net/nbuilder-net-8.webp) ## 結論 結論として、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 リポジトリまたはコミュニティ フォーラムを確認すると、有益な洞察や解決策が得られる場合があります。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。