透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
NBuilder は、テストデータ生成を簡素化する .NET ライブラリ です。 開発者は、その流暢なインターフェイスを使って、複雑なオブジェクト・グラフを簡単に作成することができる。 柔軟性、効率性、一般的なテストフレームワークとのシームレスな統合を提供します。 この記事では、NBuilderの機能、インストール方法、そして実用的なコード例でその機能を紹介する。
NBuilderは、テストやモッキングを目的としたオブジェクトの作成を簡素化するために設計されたC#オープンソースの.NETライブラリです。 開発者は、さまざまなデータ型に基づいて、デフォルトまたはカスタム指定の入力でオブジェクトをすばやく生成することができます。
ユニットテスト、機能テスト、統合テストに特に役立ちます。
.NETの組み込みデータ型や複雑なオブジェクトをテストするのに不可欠なパッケージのひとつである。
ランダムデータの生成に使用される。 このオープンソースプロジェクトに貢献することができる。
NuGetパッケージ・マネージャ・コンソールでNBuilderをインストールするには、以下のコマンドを使用します。
Install-Package Nbuilder
Install-Package Nbuilder
IRON VB CONVERTER ERROR developers@ironsoftware.com
上記のコマンドは、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
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
以下は、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();
Dim customPersonBuilder = Builder(Of Person).CreateNew().With(Sub(p) p.Name = "Tom").With(Sub(p) p.Email = "Tom@email.com")
Dim objTom = customPersonBuilder.Build()
上記のコードでは、カスタムプロパティを持つ新しい Person オブジェクトが作成されます。 Person オブジェクトの customPersonBuilder を初期化し、Name を "Tom"、Email を "Tom@email.com" に設定します。 最後に、オブジェクトを構築し、objTomに代入する。
var personList = Builder<Person>
.CreateListOfSize(10)
.Build();
var personList = Builder<Person>
.CreateListOfSize(10)
.Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
ここで、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
作成されるオブジェクトをカスタマイズする必要がある場合もあります。 with()メソッドを使用してオブジェクトの値をカスタマイズすることもできます。
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,
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()
' 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,
これは、デフォルト値が Name = "Kim"、Email = "abc@email.com"、IsMarried = false の personList を作成します。
Person Listで現実的なデータ値を取得するには、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
例 6: 連続データを使用してPersonオブジェクトリストを作成
シーケンシャルなデータを持つオブジェクトを生成する必要がある場合がある。 NBuilder .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
ここで、All() メソッドは、その後の操作にすべての 10 の人物オブジェクトに適用され、メモリ内にリストを作成します。 Do()メソッドは、各PersonオブジェクトでActionデリゲートを実行するために使用されます。
この場合、501によって指定された各人物のIdプロパティを設定します。ラムダ式 (p, i) は2つのパラメータを取ります: p は人物を指し、i はその特定のオブジェクトがリスト内で占めるインデックスを示します。リストにはそれぞれ10のオブジェクトがあるため、インデックスは0から9までの範囲です。 Id プロパティに i 値を追加することで、プロパティは 501 から 510 に順次設定され、Name プロパティは Person 1 から Person 10 に設定されます。
例 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;
}
}
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
ここで、クラスPersonには次のプロパティがあり、PersonServiceには、特定のオブジェクトのPersonのメールアドレスを返す唯一のパブリックメソッド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);
}
}
Public Class PersonTests
<Fact>
Public Sub GetPersonEmail_ReturnCorrectEmail()
' Arrange
Dim service = New PersonService()
Dim expectedEmail As String = "Tom@email.com"
Dim person = Builder(Of Person).CreateNew().With(Sub(p) p.Name = "Tom").With(Function(p) p.Email "Tom@email.com").Build()
' Act
Dim actualEmail = service.GetPersonEmailById(person)
' Assert
Assert.Equal(actualEmail, expectedEmail)
End Sub
End Class
このユニット・テストでは、PersonService クラスの GetPersonEmailById メソッドが Person オブジェクトの電子メール・アドレスを、期待される電子メール "Tom@email.com" と共に正しく返すことを検証します。 Arrange-Act-Assertパターンを使ってテストデータをセットアップし、メソッドを実行し、実際の結果が期待した結果と一致するかをチェックする。
IronPDFについて学ぶ は、.NETアプリケーション内でHTMLからPDFを作成するために設計された強力なC#ライブラリです。 その直感的なAPIにより、開発者は、請求書、レポート、対話型フォームの生成のいずれであっても、PDF機能をプロジェクトにシームレスに統合することができます。
NuGet Package Managerコンソールを開き、以下のコマンドを実行してください:
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
// 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()
このコードは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>";
}
IronPdf.License.LicenseKey = "Your-License-Key"
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
IronPDF.License.LicenseKeyにはIronPDFの機能を有効にするためのライセンスキーが設定されます。
HTMLコンテンツは、peopleリストを反復処理することで動的に構築され、各Personオブジェクトの詳細(Id、Name、Email、IsMarried)がHTML構造に追加されます。
このコードは、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");
Dim renderer = New ChromePdfRenderer()
Dim pdfDoc = renderer.RenderHtmlAsPdf(htmlContent)
pdfDoc.SaveAs("PersonList.pdf")
ChromePdfRenderer は、htmlContent に保存された HTML コンテンツを PDF ドキュメントにレンダリングするためにインスタンス化されます。 出来上がったPDF文書はファイルシステムに「PersonList.pdf」という名前で保存されます。
以下はIronPDFによって生成されたPersonListの出力です。 それぞれデフォルト値で、5人の人物が含まれている。
結論として、NBuilderは.NETでテストデータを生成し、複雑なオブジェクトグラフの作成を効率化し、テストプロセスの効率を高めるための堅牢で柔軟なツールです。 IronPDFを統合することで、開発者はプロジェクトに価値があると感じる人々のためにPDF生成機能を含めるようにアプリケーションを簡単に拡張できます。 NBuilderとIronPDFを組み合わせることで、開発ワークフローを大幅に強化し、テストと文書生成をシームレスかつ効率的に行うことができます。