Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
NBuilderist eine .NET-Bibliothek vereinfachung der Erzeugung von Testdaten. Entwickler können mit der fließenden Schnittstelle mühelos komplexe Objektgraphen erstellen. Es bietet Flexibilität, Effizienz und eine nahtlose Integration mit gängigen Test-Frameworks. In diesem Artikel werden wir uns mit den Funktionen von NBuilder beschäftigen, wie man ihn installiert und seine Fähigkeiten anhand von praktischen Codebeispielen demonstrieren.
NBuilder ist eine C#-Open-Source-.NET-Bibliothek, die die Erstellung von Objekten für Test- und Mocking-Zwecke vereinfachen soll. Entwickler können damit schnell Objekte mit Standard- oder benutzerdefinierten Eingaben auf der Grundlage verschiedener Datentypen erzeugen.
Es ist besonders nützlich für Unit-Tests, funktionale Tests und Integrationstests.
Es ist eines der wichtigsten Pakete zum Testen integrierter .NET-Datentypen und komplexer Objekte.
Es wird für die Erzeugung von Zufallsdaten verwendet. Sie können zu diesem Open-Source-Projekt beitragen.
Um NBuilder über die NuGet Package Manager Console zu installieren, verwenden Sie den folgenden Befehl.
Install-Package Nbuilder
Install-Package Nbuilder
IRON VB CONVERTER ERROR developers@ironsoftware.com
Mit dem obigen Befehl wird NBuilder mit allen Abhängigkeiten installiert.
NBuilder bietet eine fließende Methode zur Erstellung von Objekten im laufenden Betrieb. Beginnen wir mit einem einfachen Beispiel für die Erstellung eines Objekts.
Hier ist der Quellcode der Person Model Class.
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
Hier ein Beispiel für die Verwendung von NBuilder zum Erstellen und Konfigurieren eines Person-Objekts mit benutzerdefinierten Eigenschaften:
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
Der obige Code erstellt ein neues Person-Objekt mit benutzerdefinierten Eigenschaften. Er initialisiert einen customPersonBuilder für ein Person-Objekt und setzt den Namen auf "Tom" und die E-Mail auf "Tom@email.com". Schließlich wird das Objekt erstellt und objTom zugewiesen.
var personList = Builder<Person>
.CreateListOfSize(10)
.Build();
var personList = Builder<Person>
.CreateListOfSize(10)
.Build();
IRON VB CONVERTER ERROR developers@ironsoftware.com
Hier hat personList 10 Objekte mit ihren Standardwerten und gibt sie aus.
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
Manchmal müssen Sie das zu erstellende Objekt anpassen. Sie können auch den Wert des Objekts anpassen, indem Sie mit() methode.
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
Dadurch wird eine personList mit den Standardwerten Name = "Kim", E-Mail = "abc@email.com" und IsMarried = false erstellt.
Um einen realistischen Datenwert in der Personenliste zu erhalten, können Sie die Faker Library .NET verwenden, um den realen Wert der Daten zu erhalten
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
Beispiel 6: Erstellen einer Personenobjektliste mit sequentiellen Daten
Es kann vorkommen, dass Sie Objekte mit sequentiellen Daten erzeugen müssen. NBuilder .NET erleichtert dies mit der Methode 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
Hier die All() methode hat die nachfolgenden Operationen auf alle 10 Personenobjekte angewendet und eine Liste im Speicher erstellt. Der Do() methode wird verwendet, um den Action Delegate für jedes Person-Objekt auszuführen.
In diesem Fall wird die Id-Eigenschaft jeder durch 501 angegebenen Person festgelegt. Die Lambda-Ausdrücke (p, i) hat zwei Parameter: p ist die Person und i ist der Index des betreffenden Objekts in der Liste, die von (0 bis 9) da die Liste jeweils 10 Objekte enthält. Durch Hinzufügen des Werts i in der Eigenschaft Id werden die Eigenschaften nacheinander auf 501 bis 510 und die Eigenschaft Name auf Person 1 bis Person 10 gesetzt.
Beispiel 7: NBuilder mit Unit Testing mit Xunit
NBuilder in .NET wird vor allem in Testumgebungen eingesetzt, in denen Entwickler realistische und vielfältige Daten für Tests erzeugen müssen. Mit komplexen Objekten, die es Entwicklern ermöglichen, eine benutzerdefinierte Initialisierungslogik mit Hilfe von Lambda-Ausdrücken und Delegates-Funktionen zu definieren, wird das Testen einfach und wartungsfreundlich, und zwar für alle, die an einer effizienten und flexiblen Testdatenerzeugung interessiert sind.
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
Hier hat die Klasse Person die folgenden Eigenschaften und PersonService hat nur eine öffentliche Methode GetPersonEmail() die die E-Mail der Person dieses bestimmten Objekts zurückgibt.
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
Dieser Unit-Test prüft, ob die Methode GetPersonEmailById der Klasse PersonService die E-Mail-Adresse eines Person-Objekts mit der erwarteten E-Mail "Tom@email.com" korrekt zurückgibt. Es verwendet das Muster Anordnen-Handeln-Einfügen, um die Testdaten einzurichten, die Methode auszuführen und dann zu prüfen, ob das tatsächliche Ergebnis mit dem erwarteten Ergebnis übereinstimmt.
IronPDFist eine leistungsstarke C#-Bibliothek, die für erstellung von, bearbeitungund pDF-Verarbeitung dokumente innerhalb von .NET-Anwendungen. Mit der intuitiven API können Entwickler PDF-Funktionen nahtlos in ihre Projekte integrieren, egal ob sie Rechnungen, Berichte oder interaktive Formulare erstellen.
Öffnen Sie die NuGet Package Manager-Konsole und führen Sie den folgenden Befehl aus:
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();
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dieser Code setzt den IronPDF-Lizenzschlüssel und erzeugt HTML-Inhalte aus einer Liste von Personenobjekten.
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
Der IronPdf.License.LicenseKey wird mit einem bestimmten Lizenzschlüssel versehen, um die Funktionen von IronPDF zu aktivieren.
Der HTML-Inhalt wird dynamisch durch Iteration über die Personenliste erstellt, wobei die Details jedes Personenobjekts angefügt werden (Id, Name, E-Mail, IsMarried) in die HTML-Struktur.
Dieser Code konvertiert HTML-Inhalte in ein PDF-Dokument unter Verwendung des ChromePdfRenderer von IronPDF.
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
der ChromePdfRenderer wird instanziiert, um den in htmlContent** gespeicherten HTML-Inhalt in ein PDF-Dokument zu übertragen. Das resultierende PDF-Dokument wird im Dateisystem unter dem Namen "PersonList.pdf" gespeichert.
Nachfolgend sehen Sie die Ausgabe der von IronPDF generierten PersonList. Er enthält fünf Personen, die jeweils mit Standardwerten versehen sind.
Zusammenfassend lässt sich sagen, dass NBuilder ein robustes und flexibles Tool für die Generierung von Testdaten in .NET ist, das die Erstellung komplexer Objektgraphen rationalisiert und die Effizienz von Testprozessen steigert. Durch die Integration mit IronPDF können Entwickler ihre Anwendungen einfach erweitern, um Folgendes zu integrieren PDF-Erzeugung für diejenigen, die es für ihre Projekte nützlich finden. Zusammen können NBuilder und IronPDF die Arbeitsabläufe in der Entwicklung erheblich verbessern, indem sie Tests und Dokumentenerstellung nahtlos und effizient gestalten.
9 .NET API-Produkte für Ihre Bürodokumente