.NET-HILFE

NBuilder .NET (Wie es für Entwickler funktioniert)

Veröffentlicht 13. August 2024
Teilen Sie:

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 .NET (Wie es für Entwickler funktioniert): Abbildung 1 - NBuilder

Merkmale von NBuilder

  1. 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.

  2. Es ist besonders nützlich für Unit-Tests, funktionale Tests und Integrationstests.

  3. Es ist eines der wichtigsten Pakete zum Testen integrierter .NET-Datentypen und komplexer Objekte.

  4. Es wird für die Erzeugung von Zufallsdaten verwendet. Sie können zu diesem Open-Source-Projekt beitragen.

  5. Mit NBuilder können Sie mühelos Standardeigenschaften außer Kraft setzen und benutzerdefinierte Konfigurationen schreiben.

Installation von NBuilder

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
VB   C#

Mit dem obigen Befehl wird NBuilder mit allen Abhängigkeiten installiert.

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 2 - NBuilder installieren

Verwendung von NBuilder

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
VB   C#

Beispiel 1: Erstellen eines Personenobjekts mit Standardwerten

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#

Beispielbild

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 3 - Person-Objekt mit Werten

Beispiel 2: Erstellen von Objekten mit einem Custom Builder

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
VB   C#

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.

Beispiel 3: Erstellen einer Personenobjektliste mit Standardwert

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

Beispielbild

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 4 - Liste der Personenobjekte

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
VB   C#

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 5 - Automatisches Zuweisen von Werten

Beispiel 4: Anpassen von generierten Objekten

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
VB   C#

Dadurch wird eine personList mit den Standardwerten Name = "Kim", E-Mail = "abc@email.com" und IsMarried = false erstellt.

Beispiel 5: Erstellen einer Personenobjektliste mit realistischen Zufallsdaten

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
VB   C#

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
VB   C#

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.

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 6 - Sequentielle Daten

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.

Modellklasse und Dienst für Einheitstests

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#

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.

Testklassen und Testdaten

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#

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.

Integration von NBuilder mit IronPDF

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.

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 7 - IronPDF

Installation von IronPDF

Ö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
VB   C#

Die Liste der 5 Person-Objekte auffüllen

//  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#

Erstellung von PDF-Dokumenten mit IronPDF

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
VB   C#

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.

Rendering der Personenliste im PDF-Dokument mit IronPDF

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
VB   C#

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.

Ausgabe

Nachfolgend sehen Sie die Ausgabe der von IronPDF generierten PersonList. Er enthält fünf Personen, die jeweils mit Standardwerten versehen sind.

NBuilder .NET (Wie es für Entwickler funktioniert): Abbildung 8 - PDF-Ausgabe

Schlussfolgerung

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.

< PREVIOUS
Refit C# (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# TryParse (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >