using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
AutoFixture C# (Comment ça marche pour les développeurs)
Kannapat Udonpant
août 13, 2024
Partager:
AutoFixture est une bibliothèque open-source pour.NET vise à minimiser la phase "Arrangement" de l'écriture des tests unitaires, améliorant ainsi la gestion des tests. Son principal objectif est de permettre aux développeurs de se concentrer sur ce qu'ils testent, plutôt que sur le processus de configuration, en leur permettant de créer des graphiques d'objets avec des données de test. Cet article explore comment AutoFixture peut être utilisé pour faciliter le développement piloté par les tests grâce à une génération efficace des données de test.
Introduction
AutoFixture est une puissante bibliothèque en C# conçue pour rationaliser le processus de création de données de test pour les tests unitaires. Il aide les développeurs à éviter d'écrire du code de configuration répétitif en générant automatiquement des données pour les cas de test. Dans les tests unitaires, AutoFixture fournit une approche rationalisée pour générer des données de test, garantissant que chaque test unitaire est exécuté avec des données d'entrée variées et réalistes. AutoFixture rend les tests en C# plus efficaces en générant automatiquement des données de test, réduisant ainsi la nécessité d'une configuration manuelle.
Installation et configuration d'AutoFixture
AutoFixture est disponible sous la forme d'un package NuGet et peut être installé. Cette opération peut être effectuée à l'aide de la console NuGet Package Manager ou de l'interface utilisateur NuGet Package Manager de Visual Studio pour les paquets d'ajout .NET.
Install-Package AutoFixture
Install-Package AutoFixture
IRON VB CONVERTER ERROR developers@ironsoftware.com
NuGet téléchargera et installera la dernière version d'AutoFixture et ses dépendances dans votre projet.
Exemple de création de données de test pour une classe
Supposons que nous ayons une classe d'instance de fixation d'employé simple avec des propriétés telles que FirstName, LastName et Age. Au lieu de créer manuellement des instances de cette nouvelle classe de fixation dans nos tests unitaires, nous pouvons utiliser AutoFixture pour générer des données aléatoires pour nous.
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public Employee(string firstName, string lastName, int age)
{
FirstName = firstName;
LastName = lastName;
Age = age;
}
public string GetFullName() => $"{FirstName} {LastName}";
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public Employee(string firstName, string lastName, int age)
{
FirstName = firstName;
LastName = lastName;
Age = age;
}
public string GetFullName() => $"{FirstName} {LastName}";
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Description du code
Maintenant, la classe Employé encapsule les détails essentiels d'un employé, y compris son prénom, son nom et son âge, représentés par les propriétés Prénom, Nom et Âge respectivement. Son constructeur facilite l'instanciation d'un objet salarié en acceptant ces détails en tant que paramètres et en les assignant aux propriétés correspondantes. En outre, la méthode GetFullName concatène le prénom et le nom de famille de l'employé et renvoie le nom complet sous forme de chaîne de caractères.
Mise en place du code pour notre scénario de test
Ensuite, nous allons créer le code à tester :
using AutoFixture;
public class EmployeeTests
{
private readonly IFixture _fixture;
public EmployeeTests()
{
_fixture = new Fixture(); // var fixture
}
}
using AutoFixture;
public class EmployeeTests
{
private readonly IFixture _fixture;
public EmployeeTests()
{
_fixture = new Fixture(); // var fixture
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Description du code
Cet extrait de code intègre AutoFixture dans les tests unitaires de la classe Employee. En important l'espace de noms AutoFixture, les développeurs accèdent à la fonctionnalité de génération de données. Le champ _fixture initialisé avec une nouvelle instance Fixture dans le constructeur, rationalise la création des données de test. Cette configuration améliore l'efficacité et la fiabilité des tests pour une couverture complète de la classe Salarié.
Exemple 1 : Validation des valeurs de l'objet du cas de test du salarié
[Fact]
public void Employee_ShouldHaveValidValues()
{
// Arrange
var firstName = _fixture.Create<string>();
var lastName = _fixture.Create<string>();
var age = _fixture.Create<int>();
// Act
var employee = new Employee(firstName, lastName, age);
// Assert
Assert.Equal(firstName, employee.FirstName);
Assert.Equal(lastName, employee.LastName);
Assert.Equal(age, employee.Age);
}
[Fact]
public void Employee_ShouldHaveValidValues()
{
// Arrange
var firstName = _fixture.Create<string>();
var lastName = _fixture.Create<string>();
var age = _fixture.Create<int>();
// Act
var employee = new Employee(firstName, lastName, age);
// Assert
Assert.Equal(firstName, employee.FirstName);
Assert.Equal(lastName, employee.LastName);
Assert.Equal(age, employee.Age);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Description du code
La méthode de test Employee_ShouldHaveValidValues valide le fait que la classe Employee initialise correctement ses propriétés avec les valeurs fournies. En utilisant un dispositif de test pour générer des données aléatoires pour le prénom, le nom et l'âge, le test crée une instance d'employé. Il affirme ensuite que les propriétés FirstName, LastName et Age de l'objet Employee correspondent aux valeurs générées, en s'assurant que le constructeur définit ces propriétés avec précision.
Exemple 2 : Validation de l'employé lors de l'invocation du constructeur
IRON VB CONVERTER ERROR developers@ironsoftware.com
Description du code
Cet extrait de code de test comprend des assertions de test qui vérifient si les propriétés d'un objet Employee correspondent à des valeurs générées de manière aléatoire. Il vérifie si les propriétés de type chaîne de caractères (string FirstName, string LastName et int Age) correspondent aux valeurs générées aléatoirement et attribuées aux variables firstName, lastName et age. Les assertions qui échouent signalent une inadéquation entre les valeurs attendues et les valeurs aléatoires générées par les données relatives aux salariés.
Présentation d'IronPDF
IronPDF C# PDF Library (Bibliothèque PDF C#) est une bibliothèque PDF C# robuste développée par Iron Software qui facilite l'utilisation des outils de développement .NET, Java, Python ou Node jadelecture d'un texte PDF et lecréation de documents PDF à l'aide de HTML. Cet outil polyvalent permet de convertir des documents faciles à formater, avec des informations de style, en PDF de haute qualité. Avec IronPDF,générer des PDF à partir de HTML le processus de traduction du texte HTML est transparent et permet aux utilisateurs d'extraire le contenu HTML des URL et de le transformer en fichiers PDF bien structurés. Cette capacité fait d'IronPDF un outil essentiel pour les développeurs qui cherchent à automatiser et à rationaliser la création de documents PDF professionnels directement à partir de contenus web.
Installation d'IronPDF
Ouvrez la console NuGet Package Manager et exécutez la commande suivante :
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
Exemple de code utilisant les fonctionnalités d'AutoFixture avec IronPdf
Nous allons d'abord créer une classe EmployeePdfGenerator qui contient la méthode de génération des employés.
using DemoAutofixture;
List<Employee> employees = new List<Employee>()
{
new Employee("John","Smith",32){ },
new Employee("Emily","Davis",18){ },
new Employee("David","Brown",24){ },
new Employee("Jane","Doe",16){ },
new Employee("Michael","Johnson",49){ },
};
EmployeePdfGenerator pdfGenerator = new();
pdfGenerator.GeneratePdf(employees, "EmployeeList.pdf");
Console.WriteLine("PDF Created Successfully!");
public class EmployeePdfGenerator
{
private readonly Fixture _fixture;
public EmployeePdfGenerator()
{
_fixture = new Fixture();
}
public List<Employee> GenerateEmployees(int count)
{
return _fixture.CreateMany<Employee>(count).ToList();
}
public void GeneratePdf(List<Employee> employees, string filePath)
{
IronPdf.License.LicenseKey = "Your-License-Key-Here";
var renderer = new ChromePdfRenderer();
string htmlContent = GenerateHtml(employees);
try
{
renderer.RenderHtmlAsPdf(htmlContent).SaveAs(filePath);
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF: {ex.Message}");
}
}
private string GenerateHtml(List<Employee> employees)
{
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.Append("<!DOCTYPE html><html><head><title>Employee List</title></head><body><h1>Employee List</h1><ul>");
foreach (var employee in employees)
{
htmlBuilder.Append($"<li>{employee.GetFullName()} - Age: {employee.Age}</li>");
}
htmlBuilder.Append("</ul></body></html>");
return htmlBuilder.ToString();
}
}
using DemoAutofixture;
List<Employee> employees = new List<Employee>()
{
new Employee("John","Smith",32){ },
new Employee("Emily","Davis",18){ },
new Employee("David","Brown",24){ },
new Employee("Jane","Doe",16){ },
new Employee("Michael","Johnson",49){ },
};
EmployeePdfGenerator pdfGenerator = new();
pdfGenerator.GeneratePdf(employees, "EmployeeList.pdf");
Console.WriteLine("PDF Created Successfully!");
public class EmployeePdfGenerator
{
private readonly Fixture _fixture;
public EmployeePdfGenerator()
{
_fixture = new Fixture();
}
public List<Employee> GenerateEmployees(int count)
{
return _fixture.CreateMany<Employee>(count).ToList();
}
public void GeneratePdf(List<Employee> employees, string filePath)
{
IronPdf.License.LicenseKey = "Your-License-Key-Here";
var renderer = new ChromePdfRenderer();
string htmlContent = GenerateHtml(employees);
try
{
renderer.RenderHtmlAsPdf(htmlContent).SaveAs(filePath);
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF: {ex.Message}");
}
}
private string GenerateHtml(List<Employee> employees)
{
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.Append("<!DOCTYPE html><html><head><title>Employee List</title></head><body><h1>Employee List</h1><ul>");
foreach (var employee in employees)
{
htmlBuilder.Append($"<li>{employee.GetFullName()} - Age: {employee.Age}</li>");
}
htmlBuilder.Append("</ul></body></html>");
return htmlBuilder.ToString();
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Description du code
Le code C# fourni utilise la bibliothèque IronPDF pour générer un document PDF contenant la liste des employés et leur âge. Il définit une classe EmployeePdfGenerator et contient la méthode GeneratePdf, qui prend une liste d'objets Employee et un chemin d'accès au fichier. En interne, il construit le contenu HTML à l'aide de la méthode GenerateHtml, puis utilise la classe HtmlToPdf d'IronPDF pour rendre ce HTML sous la forme d'un PDF, enregistré dans le chemin d'accès au fichier spécifié. Les améliorations comprennent l'utilisation de StringBuilder pour la génération HTML et l'ajout d'une gestion de base des erreurs pour la génération PDF et l'enregistrement des fichiers.
Rédaction d'une méthode de test
Dans la configuration ci-dessous, AutoFixture est utilisé pour créer des instances de la classe Employee, ce qui permet de générer des données aléatoires pour les tests. IronPDF est utilisé pour convertir de manière transparente le contenu HTML, y compris les informations sur les employés, au format PDF. La classe EmployeePdfGenerator orchestre ces processus, en gérant efficacement la génération des données et la conversion au format PDF. Par ailleurs, la classe de test XUnit EmployeePdfGeneratorTests garantit le bon fonctionnement de la génération de PDF grâce à des tests rigoureux. Cette approche intégrée simplifie la génération et la documentation des données relatives aux employés, tout en garantissant la robustesse et la fiabilité du processus de génération des PDF.
using System;
using System.IO;
using Xunit;
public class EmployeePdfGeneratorTests
{
[Fact]
public void GeneratePdf_GeneratesPdfFile()
{
// Arrange
var generator = new EmployeePdfGenerator();
var employees = generator.GenerateEmployees(5);
string filePath = "EmployeeList.pdf";
// Act
generator.GeneratePdf(employees, filePath);
// Assert
Assert.True(File.Exists(filePath));
}
}
using System;
using System.IO;
using Xunit;
public class EmployeePdfGeneratorTests
{
[Fact]
public void GeneratePdf_GeneratesPdfFile()
{
// Arrange
var generator = new EmployeePdfGenerator();
var employees = generator.GenerateEmployees(5);
string filePath = "EmployeeList.pdf";
// Act
generator.GeneratePdf(employees, filePath);
// Assert
Assert.True(File.Exists(filePath));
}
}
Imports System
Imports System.IO
Imports Xunit
Public Class EmployeePdfGeneratorTests
<Fact>
Public Sub GeneratePdf_GeneratesPdfFile()
' Arrange
Dim generator = New EmployeePdfGenerator()
Dim employees = generator.GenerateEmployees(5)
Dim filePath As String = "EmployeeList.pdf"
' Act
generator.GeneratePdf(employees, filePath)
' Assert
Assert.True(File.Exists(filePath))
End Sub
End Class
Ici, la classe EmployeePdfGeneratorTests contient des cas de test pour la classe Employee qui a validé le PDF sur le chemin du fichier.
Conclusion
AutoFixture simplifie la phase "Arrange" de l'écriture des tests unitaires en .NET, offrant aux développeurs un moyen de se concentrer sur les cas de test plutôt que sur les subtilités de l'installation. Il rationalise le processus de test unitaire en garantissant des entrées variées et réalistes grâce à la génération automatique de données de test. En collaboration avecInformations sur les licences IronPDF pour une utilisation et un soutien continus.
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
< PRÉCÉDENT HttpListener C# (Comment ça marche pour les développeurs)
SUIVANT > Entity Framework Core (Comment ça marche pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier