.NET ヘルプ

NBuilder .NET (開発者のための仕組み)

更新済み 8月 13, 2024
共有:

NBビルダー.NET ライブラリ テストデータ作成の簡素化 開発者は、その流暢なインターフェイスを使って、複雑なオブジェクト・グラフを簡単に作成することができる。 柔軟性、効率性、一般的なテストフレームワークとのシームレスな統合を提供します。 この記事では、NBuilderの機能、インストール方法、そして実用的なコード例でその機能を紹介する。

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図1 - NBuilder

NBuilderの特徴

  1. NBuilderは、テストやモッキングを目的としたオブジェクトの作成を簡素化するために設計された.NETのC#オープンソースライブラリです。 これにより開発者は、さまざまなデータ型に基づくデフォルトまたはカスタム指定の入力を持つオブジェクトを素早く生成できる。

  2. 特に単体テスト、機能テスト、統合テストに役立つ。

  3. .NETの組み込みデータ型や複雑なオブジェクトをテストするのに不可欠なパッケージのひとつである。

  4. ランダムデータの生成に使用される。 このオープンソースプロジェクトに貢献することができる。

  5. NBuilderを使えば、デフォルト・プロパティを簡単にオーバーライドし、カスタム設定を書き込むことができます。

NBuilderのインストール

NuGetパッケージ・マネージャ・コンソールでNBuilderをインストールするには、以下のコマンドを使用します。

Install-Package Nbuilder
Install-Package Nbuilder
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

上記のコマンドは、NBuilderをその依存関係すべてとともにインストールする。

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図2 - NBuilderのインストール

NBuilderの使い方

NBuilderは、その場でオブジェクトを作成する流暢な方法を提供する。 オブジェクトを作成する簡単な例から始めよう。

Personモデルクラスのソースコードです。

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; }
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

例 1 : 既定値を持つ Person オブジェクトの作成

var person = Builder<Person>
                .CreateNew()
                .Build();
       //person = { Id = 1, Name = Name1, Email = Email1 , IsMarried  = false }
var person = Builder<Person>
                .CreateNew()
                .Build();
       //person = { Id = 1, Name = Name1, Email = Email1 , IsMarried  = false }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

サンプル画像

.NBuilder(エヌビルダー) .NET (開発者向けの仕組み):図3 - 値を持つPersonオブジェクト

例2:カスタムビルダーでオブジェクトを作成する

以下は、NBuilder を使用して、カスタム・プロパティを持つ Person オブジェクトを作成および構成する方法の例です:

var customPersonBuilder = Builder<Person>.CreateNew()
                .With(p => p.Name = "Tom")
                .With(p => p.Email = "Tom@email.com");
            var objTom = customPersonBuilder.Build();
var customPersonBuilder = Builder<Person>.CreateNew()
                .With(p => p.Name = "Tom")
                .With(p => p.Email = "Tom@email.com");
            var objTom = customPersonBuilder.Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

上記のコードでは、カスタムプロパティを持つ新しい Person オブジェクトが作成されます。 Person オブジェクトの customPersonBuilder を初期化し、Name を "Tom"、Email を "Tom@email.com" に設定します。 最後に、オブジェクトを構築し、objTomに代入する。

例 3:デフォルト値を持つ Person オブジェクト・リストの作成

var personList = Builder<Person>
                                     .CreateListOfSize(10)
                                     .Build();
var personList = Builder<Person>
                                     .CreateListOfSize(10)
                                     .Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

サンプル画像

.NBuilder(エヌビルダー) .NET (開発者向けの仕組み):図4 - 人物オブジェクトリスト

ここでpersonListは10個のオブジェクトをデフォルト値で持ち、それらを表示する。

var personList = Builder<Person>
                                            .CreateListOfSize(10)
                                            .Build();
            // Here it creates the 10 objects of Person in personList
            foreach (var person in personList)
            {
       Console.WriteLine($"{person.Id}, {person.Name}, {person.Email}, {person.IsMarried}, ");
            }
var personList = Builder<Person>
                                            .CreateListOfSize(10)
                                            .Build();
            // Here it creates the 10 objects of Person in personList
            foreach (var person in personList)
            {
       Console.WriteLine($"{person.Id}, {person.Name}, {person.Email}, {person.IsMarried}, ");
            }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図5 - 値の自動割り当て

例4:生成オブジェクトのカスタマイズ

時には、作成されるオブジェクトをカスタマイズする必要があるかもしれません。 でオブジェクトの値をカスタマイズすることもできます。() メソッド。

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();
            // Output:  
            //    Id:  1, Name: Name1, Email: Email1, IsMarried False,
            //    Id : 2, Name: Name2, Email: Email2, IsMarried True,
            //    Id : 3, Name: Name3, Email: Email3, IsMarried False,
            //    Id : 4, Name: Name4, Email: Email4, IsMarried True,
            //    Id : 5, Name: Name5, Email: Email5, IsMarried False,
            //    Id : 6, Name: Name6, Email: Email6, IsMarried True,
            //    Id : 7, Name: Name7, Email: Email7, IsMarried False,
            //    Id : 8, Name: Name8, Email: Email8, IsMarried True,
            //    Id : 9, Name: Name9, Email: Email9, IsMarried False,
            //    Id : 10, Name: Name10, Email: Email10, IsMarried True,
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();
            // Output:  
            //    Id:  1, Name: Name1, Email: Email1, IsMarried False,
            //    Id : 2, Name: Name2, Email: Email2, IsMarried True,
            //    Id : 3, Name: Name3, Email: Email3, IsMarried False,
            //    Id : 4, Name: Name4, Email: Email4, IsMarried True,
            //    Id : 5, Name: Name5, Email: Email5, IsMarried False,
            //    Id : 6, Name: Name6, Email: Email6, IsMarried True,
            //    Id : 7, Name: Name7, Email: Email7, IsMarried False,
            //    Id : 8, Name: Name8, Email: Email8, IsMarried True,
            //    Id : 9, Name: Name9, Email: Email9, IsMarried False,
            //    Id : 10, Name: Name10, Email: Email10, IsMarried True,
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

これは、デフォルト値が Name = "Kim"、Email = "abc@email.com"、IsMarried = false の personList を作成します。

例5:現実的なランダムデータによる人物オブジェクトリストの作成

パーソンリストのリアルなデータ値を取得するには、Faker Library .NET を使用します。

var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = Faker.Name.FullName())
                .With(p => p.Id = Faker.RandomNumber.Next(20, 60))
                .Build();
var personList = Builder<Person>
                .CreateListOfSize(10)
                .All()
                .With(p => p.Name = Faker.Name.FullName())
                .With(p => p.Id = Faker.RandomNumber.Next(20, 60))
                .Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

例 6:連続データを含む人物オブジェクト・リストの作成」。

シーケンシャルなデータを持つオブジェクトを生成する必要がある場合がある。 .NET では、Do メソッドを使ってこれを容易にします。

var personList = Builder<Person>.CreateListOfSize(10)
                .All()
                .Do((p, i) => p.Id = 501 + i)
                .Do((p, i) => p.Name = $"Person {i + 1}")
                .Build();
var personList = Builder<Person>.CreateListOfSize(10)
                .All()
                .Do((p, i) => p.Id = 501 + i)
                .Do((p, i) => p.Name = $"Person {i + 1}")
                .Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

ここでオール() メソッドは、10人の人物オブジェクトすべてに後続の操作を適用し、メモリ内にリストを作成した。 ザ・ドゥ() メソッドは、各 Person オブジェクトに対して Action Delegate を実行するために使用されます。

ここでは、501で指定された各人のIdプロパティを設定する。ラムダ式 (p, i) 2つのパラメータpは人物、iはそのオブジェクトのインデックスである。 (0 から 9) リストにはそれぞれ10個のオブジェクトがある。 Id プロパティに i 値を追加することで、プロパティは順次 501 から 510 に設定され、Name プロパティは Person 1 から Person 10 に設定されます。

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図6 - シーケンシャル・データ

例7:Xunitを使ったNBuilderとユニットテスト

.NETのNBuilderは、開発者がテストのために現実的で多様なデータセットを生成する必要があるテスト環境で、かなり使用されています。 開発者がラムダ式やデリゲート関数を使用してカスタム初期化ロジックを定義できる複雑なオブジェクトにより、テストが簡単で保守しやすくなります。

ユニットテストのためのモデルクラスとサービス

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;
        }
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

ここで、Person クラスには以下のプロパティがあり、PersonService には 1 つのパブリック・メソッド GetPersonEmail しかありません。() を返します。

テストクラスとテストデータ

public class PersonTests
 {
     [Fact]
     public void GetPersonEmail_ReturnCorrectEmail()
     {
         // Arrange
         var service = new PersonService();
         string expectedEmail = "Tom@email.com";
         var person = Builder<Person>.CreateNew()
             .With(p => p.Name = "Tom")
             .With(p => p.Email "Tom@email.com")
             .Build();
         // Act
         var actualEmail = service.GetPersonEmailById(person);
         // Assert
         Assert.Equal(actualEmail,expectedEmail);
     }
 }
public class PersonTests
 {
     [Fact]
     public void GetPersonEmail_ReturnCorrectEmail()
     {
         // Arrange
         var service = new PersonService();
         string expectedEmail = "Tom@email.com";
         var person = Builder<Person>.CreateNew()
             .With(p => p.Name = "Tom")
             .With(p => p.Email "Tom@email.com")
             .Build();
         // Act
         var actualEmail = service.GetPersonEmailById(person);
         // Assert
         Assert.Equal(actualEmail,expectedEmail);
     }
 }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

このユニット・テストでは、PersonService クラスの GetPersonEmailById メソッドが Person オブジェクトの電子メール・アドレスを、期待される電子メール "Tom@email.com" と共に正しく返すことを検証します。 Arrange-Act-Assertパターンを使ってテストデータをセットアップし、メソッドを実行し、実際の結果が期待した結果と一致するかをチェックする。

NBuilderとIronPDFの統合

IronPDFのために設計された強力なC#ライブラリです。 作成, 編集、および PDF処理 .NET アプリケーション内の文書。 その直感的なAPIにより、開発者は、請求書、レポート、対話型フォームの生成のいずれであっても、PDF機能をプロジェクトにシームレスに統合することができます。

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図7 - IronPDF

IronPDFのインストール

NuGet Package Managerコンソールを開き、以下のコマンドを実行する:

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

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();
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

IronPDFを使ったPDFドキュメントの作成

このコードはIronPDFライセンスキーを設定し、PersonオブジェクトのリストからHTMLコンテンツを生成します。

IronPdf.License.LicenseKey = "Your-License-Key";
    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 = "Your-License-Key";
    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>";
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

IronPDF.License.LicenseKeyにはIronPDFの機能を有効にするためのライセンスキーが設定されます。

HTMLコンテンツは、Personオブジェクトの詳細を追加しながら、Personリストを繰り返し処理することで動的に作成されます。 (Id、Name、Email、IsMarried) をHTML構造に追加する。

IronPDFを使ったPDFドキュメントの人物リストのレンダリング

このコードはIronPDFのChromePdfRendererを使ってHTMLコンテンツをPDFドキュメントに変換します。

var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent);
        pdfDoc.SaveAs("PersonList.pdf");
var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent);
        pdfDoc.SaveAs("PersonList.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

ChromePdfRendererは、htmlContentに格納されているHTMLコンテンツをPDFドキュメントにレンダリングするためにインスタンス化されます。 出来上がったPDF文書はファイルシステムに「PersonList.pdf」という名前で保存されます。

出力

以下はIronPDFによって生成されたPersonListの出力です。 それぞれデフォルト値で、5人の人物が含まれている。

.NBuilder(エヌビルダー) .NET (開発者のための仕組み):図8 - PDF出力

結論

結論として、NBuilderは.NETでテストデータを生成し、複雑なオブジェクトグラフの作成を効率化し、テストプロセスの効率を高めるための堅牢で柔軟なツールです。 IronPDFと統合することで、開発者は簡単にアプリケーションを拡張することができます。 PDF生成 自分のプロジェクトに価値を見出す人のために。 NBuilderとIronPDFを組み合わせることで、開発ワークフローを大幅に強化し、テストと文書生成をシームレスかつ効率的に行うことができます。

< 以前
C#をリフィットする(開発者のための仕組み)
次へ >
C# TryParse(開発者向けの動作方法)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >