AYUDA .NET

NBuilder .NET (Cómo funciona para desarrolladores)

Actualizado agosto 13, 2024
Compartir:

NBuilderes un biblioteca .NET simplificar la generación de datos de prueba. Los desarrolladores pueden crear complejos gráficos de objetos sin esfuerzo gracias a su fluida interfaz. Ofrece flexibilidad, eficacia y una integración perfecta con los marcos de pruebas más conocidos. En este artículo, exploraremos las características de NBuilder, cómo instalarlo y demostraremos sus capacidades con ejemplos prácticos de código.

NBuilder .NET (Cómo funciona para los desarrolladores): Figura 1 - NBuilder

Características de NBuilder

  1. NBuilder es una biblioteca .NET de código abierto diseñada para simplificar la creación de objetos con fines de prueba y simulación. Permite a los desarrolladores generar rápidamente objetos con entradas predeterminadas o personalizadas basadas en distintos tipos de datos.

  2. Es especialmente útil para pruebas unitarias, pruebas funcionales y pruebas de integración.

  3. Es uno de los paquetes esenciales para probar tipos de datos .NET incorporados y objetos complejos.

  4. Se utiliza para generar datos aleatorios. Puedes contribuir a este proyecto de código abierto.

  5. Con NBuilder, puede anular sin esfuerzo las propiedades predeterminadas y escribir configuraciones personalizadas.

Instalación de NBuilder

Para instalar NBuilder en la consola de NuGet Package Manager, utilice el siguiente comando.

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

El comando anterior instalará NBuilder con todas sus dependencias.

NBuilder .NET (Cómo funciona para desarrolladores): Figura 2 - Instalar NBuilder

Utilización de NBuilder

NBuilder proporciona una forma fluida de crear objetos sobre la marcha. Empecemos con un ejemplo sencillo de creación de un objeto.

Aquí está el código fuente de la Clase Modelo Persona.

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#

Ejemplo 1: Creación de un objeto Persona con valores por defecto

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#

Imagen de muestra

NBuilder .NET (Cómo funciona para desarrolladores): Figura 3 - Objeto Persona con valores

Ejemplo 2: Creación de objetos con un generador personalizado

A continuación se muestra un ejemplo de cómo utilizar NBuilder para crear y configurar un objeto Persona con propiedades personalizadas:

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#

El código anterior crea un nuevo objeto Persona con propiedades personalizadas. Inicializa un customPersonBuilder para un objeto Persona, estableciendo el Nombre como "Tom" y el Email como "Tom@email.com". Finalmente, construye el objeto y lo asigna a objTom.

Ejemplo 3: Creación de una lista de objetos persona con valor por defecto

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

Imagen de muestra

NBuilder .NET (Cómo funciona para desarrolladores): Figura 4 - Lista de objetos Persona

Aquí personList tiene 10 objetos con sus valores por defecto y los imprime.

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 (Cómo funciona para los desarrolladores): Figura 5 - Asignación automática de valores

Ejemplo 4: Personalización de objetos generados

A veces puede ser necesario personalizar el objeto que se está creando. También puede personalizar el valor del objeto utilizando con() método.

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#

Esto crea un personList con su valor por defecto como Name = "Kim", Email = "abc@email.com", y IsMarried = false.

Ejemplo 5: Creación de una lista de objetos persona con datos aleatorios realistas

Para obtener el valor real de los datos en la Lista de Personas, puede utilizar Faker Library .NET para obtener el valor real de los datos

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#

Ejemplo 6: Creación de una lista de objetos persona con datos secuenciales

Hay ocasiones en las que puede ser necesario generar objetos con datos secuenciales. NBuilder .NET facilita esto utilizando el método 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#

Aquí el Todo() ha aplicado las operaciones subsiguientes a los 10 objetos persona y ha creado una lista en memoria. El Do() se utiliza para ejecutar la Acción Delegada en cada objeto Persona.

En este caso, establece la propiedad Id de cada persona especificada por 501. Las expresiones lambda (p, i) toman dos parámetros p es la persona e i es el índice de ese objeto concreto en la lista que va desde (0 a 9) ya que la lista tiene 10 objetos respectivamente. Añadiendo el valor i en la propiedad Id las propiedades se establecen secuencialmente de 501 a 510 y la propiedad Name se establecerá de Persona 1 a Persona 10.

NBuilder .NET (Cómo funciona para los desarrolladores): Figura 6 - Datos secuenciales

Ejemplo 7: NBuilder con pruebas unitarias mediante Xunit

NBuilder en .NET se utiliza significativamente en entornos de pruebas, donde los desarrolladores necesitan generar conjuntos de datos realistas y diversos para las pruebas. Facilita las pruebas y su mantenimiento con objetos complejos que permiten a los desarrolladores definir una lógica de inicialización personalizada mediante expresiones lambda y funciones delegadas que satisfacen a los interesados en una generación de datos de prueba eficaz y flexible.

Clase modelo y servicio para pruebas unitarias

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#

Aquí la clase Persona tiene las siguientes propiedades y PersonService sólo tiene un método público GetPersonEmail() que devuelve el correo electrónico de Persona de ese objeto en particular.

Clases de prueba y datos de prueba

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#

Esta prueba unitaria verifica que el método GetPersonEmailById de la clase PersonService devuelve correctamente la dirección de correo electrónico de un objeto Person con el correo electrónico esperado "Tom@email.com". Utiliza el patrón Arrange-Act-Assert para configurar los datos de prueba, ejecutar el método y, a continuación, comprobar que el resultado real coincide con el resultado esperado.

Integración de NBuilder con IronPDF

IronPDFes una potente biblioteca de C# diseñada para creación de, edicióny procesamiento PDF dentro de las aplicaciones .NET. Gracias a su intuitiva API, los desarrolladores pueden integrar a la perfección la funcionalidad PDF en sus proyectos, ya se trate de generar facturas, informes o formularios interactivos.

NBuilder .NET (Cómo funciona para desarrolladores): Figura 7 - IronPDF

Instalación de IronPDF

Abra la consola de NuGet Package Manager y ejecute el siguiente comando:

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

Rellenar la lista de 5 objetos Persona

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

Creación de documentos PDF con IronPDF

Este código establece la clave de licencia de IronPDF y genera contenido HTML a partir de una lista de objetos Persona.

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 se establece con una clave de licencia específica para habilitar las funciones de IronPDF.

El contenido HTML se construye dinámicamente iterando sobre la lista de personas, añadiendo los detalles de cada objeto Persona (Id, Nombre, Email, IsMarried) en la estructura HTML.

Renderización de la lista de personas en un documento PDF mediante IronPDF

Este código convierte el contenido HTML en un documento PDF utilizando el ChromePdfRenderer de 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#

ChromePdfRenderer es instanciado para renderizar el contenido HTML almacenado en htmlContent en un documento PDF. El documento PDF resultante se guarda en el sistema de archivos con el nombre "PersonList.pdf".

Salida

A continuación se muestra la lista de personas generada por IronPDF. Contiene cinco personas, cada una con valores por defecto.

NBuilder .NET (Cómo funciona para desarrolladores): Figura 8 - Salida PDF

Conclusión

En conclusión, NBuilder es una herramienta sólida y flexible para generar datos de prueba en .NET, agilizar la creación de gráficos de objetos complejos y mejorar la eficacia de los procesos de prueba. Al integrarse con IronPDF, los desarrolladores pueden ampliar fácilmente sus aplicaciones para incluir Generación de PDF para quienes lo consideren valioso para sus proyectos. Juntos, NBuilder e IronPDF pueden mejorar significativamente los flujos de trabajo de desarrollo, haciendo que las pruebas y la generación de documentos sean fluidas y eficientes.

< ANTERIOR
Refit C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# TryParse (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,516,730 View Licenses >