AIDE .NET

Specflow C# (Comment ça marche pour les développeurs)

Publié juillet 1, 2024
Partager:

Specflow C#

Specflow C# est un cadre de test open-source qui prend en charge le développement axé sur le comportement (BDD) et vous permet de créer des fichiers de caractéristiques pour vos scénarios de test. Il s'intègre parfaitement aux projets du Framework .NET.

Vous pouvez décrire les tests en langage clair. Cette méthode facilite la collaboration entre les développeurs et les non-développeurs. Chacun peut contribuer aux scénarios de test. Specflow utilise principalement des fichiers de fonctionnalités pour gérer et exécuter tous les tests dans le dossier des fonctionnalités.

IronPDF, quant à lui, est une bibliothèque axée sur la manipulation des PDF au sein de .NET. Il vous permet de créer, d'éditer et de lire facilement des fichiers PDF. Vous pouvez convertir HTML directement en PDF. Cette fonction est particulièrement utile pour générer des rapports ou des documents dans vos applications. IronPDF est compatible avec différentes versions de .NET, notamment Core, Framework et Standard.

Bien que Specflow C# et IronPDF aient des objectifs distincts, ce sont des outils précieux dans la boîte à outils d'un développeur. Ils peuvent être combinés efficacement dans le cadre d'un projet. Par exemple, vous pouvez utiliser Specflow C# pour définir et tester une fonction dans laquelle des données sont récupérées et traitées, puis utiliser IronPDF pour générer un rapport basé sur les résultats des tests. Ce tutoriel Specflow montre comment ces outils peuvent fonctionner ensemble pour améliorer votre processus de développement d'applications.

Démarrer avec Specflow C

Mise en place de Specflow dans les projets .NET

Pour commencer à utiliser Specflow dans vos projets .NET, vous devez d'abord installer le package NuGet Specflow pour configurer votre cadre de test, créer des fichiers de fonctionnalités et définir des scénarios de test.

  1. Ouvrez Visual Studio.
  2. Créez un nouveau projet .NET ou ouvrez un projet existant.
  3. Allez dans le menu Extensions, puis Gérer les extensions.
  4. Recherche de "Specflow". Installer l'extension Specflow.

    Specflow C# (Comment ça marche pour les développeurs) : Figure 1

Un exemple de code de base

Une fois Specflow configuré, vous pouvez créer votre premier fichier de fonctionnalité, qui résidera dans le dossier features. Un fichier de caractéristiques dans Specflow décrit les comportements que vous souhaitez tester dans un format lisible. Voici un exemple simple de création d'un nouveau fichier de fonctionnalités et de définition de scénarios :

Feature: Login Feature
    Scenario: Successful Login with Valid Credentials
        Given I am on the login page
        When I enter valid credentials
        Then I should be redirected to the dashboard
Feature: Login Feature
    Scenario: Successful Login with Valid Credentials
        Given I am on the login page
        When I enter valid credentials
        Then I should be redirected to the dashboard
Feature:
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Login Feature Scenario: Successful Login @with Valid Credentials Given I am on the login page @When I enter valid credentials @Then I should be redirected @to the dashboard
VB   C#

Cette fiche décrit une procédure de connexion de base. Given met en scène le test. When décrit l'action. le terme "ensuite" définit le résultat attendu. Vous rédigez ces déclarations en langage clair. Il est ainsi facile de comprendre le déroulement et l'objectif du test.

Caractéristiques de la mise en œuvre de Specflow C

Rédaction de tests avec des définitions d'étapes

Dans Specflow, les tests sont pilotés par des scénarios décrits dans des fichiers de caractéristiques. Pour rendre ces scénarios exécutables, vous avez besoin de définitions d'étapes. Les définitions d'étapes lient les étapes en langage clair au code C#. Voici comment définir les étapes :

[Binding]
public class LoginSteps
{
    [Given(@"I am on the login page")]
    public void GivenIAmOnTheLoginPage()
    {
        // Code to navigate to the login page
    }

    [When(@"I enter valid credentials")]
    public void WhenIEnterValidCredentials()
    {
        // Code to input username and password
    }

    [Then(@"I should be redirected to the dashboard")]
    public void ThenIShouldBeRedirectedToTheDashboard()
    {
        // Code to verify the dashboard is displayed
    }
}
[Binding]
public class LoginSteps
{
    [Given(@"I am on the login page")]
    public void GivenIAmOnTheLoginPage()
    {
        // Code to navigate to the login page
    }

    [When(@"I enter valid credentials")]
    public void WhenIEnterValidCredentials()
    {
        // Code to input username and password
    }

    [Then(@"I should be redirected to the dashboard")]
    public void ThenIShouldBeRedirectedToTheDashboard()
    {
        // Code to verify the dashboard is displayed
    }
}
<Binding>
Public Class LoginSteps
	<Given("I am on the login page")>
	Public Sub GivenIAmOnTheLoginPage()
		' Code to navigate to the login page
	End Sub

	<[When]("I enter valid credentials")>
	Public Sub WhenIEnterValidCredentials()
		' Code to input username and password
	End Sub

	<[Then]("I should be redirected to the dashboard")>
	Public Sub ThenIShouldBeRedirectedToTheDashboard()
		' Code to verify the dashboard is displayed
	End Sub
End Class
VB   C#

Cette classe C# représente les étapes du scénario de connexion. Chaque méthode est étiquetée avec un attribut Specflow correspondant au type d'étape, tel qu'une clé de chaîne pour identifier des étapes spécifiques.

Tests basés sur les données

Specflow supporte les tests pilotés par les données en vous permettant d'utiliser différents ensembles de données de test dans vos scénarios. Cela vous permet de tester des scénarios avec différents ensembles de données. Voici un exemple d'utilisation d'un tableau dans un fichier de caractéristiques :

Scenario: Login with multiple users
    Given I am on the login page
    When I login with the following credentials:
 Username  
 Password  

 user1     
 pass1     

 user2     
 pass2     
    Then I should see user specific dashboard
Scenario: Login with multiple users
    Given I am on the login page
    When I login with the following credentials:
 Username  
 Password  

 user1     
 pass1     

 user2     
 pass2     
    Then I should see user specific dashboard
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Dans vos définitions d'étapes, vous pouvez accéder à ces données de la manière suivante :

[When(@"I login with the following credentials:")]
public void WhenILoginWithTheFollowingCredentials(Table table)
{
    foreach(var row in table.Rows)
    {
        string username = row["Username"];
        string password = row["Password"];
        // Code to perform login
    }
}
[When(@"I login with the following credentials:")]
public void WhenILoginWithTheFollowingCredentials(Table table)
{
    foreach(var row in table.Rows)
    {
        string username = row["Username"];
        string password = row["Password"];
        // Code to perform login
    }
}
<[When]("I login with the following credentials:")>
Public Sub WhenILoginWithTheFollowingCredentials(ByVal table As Table)
	For Each row In table.Rows
		Dim username As String = row("Username")
		Dim password As String = row("Password")
		' Code to perform login
	Next row
End Sub
VB   C#

Intégration avec Test Explorer

Specflow s'intègre à l'explorateur de tests de Visual Studio, où vous pouvez exécuter et gérer tous les tests de manière efficace. Cela facilite l'exécution et la gestion de vos tests. Assurez-vous que votre projet est correctement configuré. Vos tests apparaîtront dans l'Explorateur de tests une fois que vous aurez construit le projet. Vous pouvez exécuter des tests individuels ou tous les tests à la fois.

Exécution de tests en parallèle

Specflow permet d'exécuter des tests en parallèle afin de réduire le temps d'exécution global. Cela permet de réduire le temps nécessaire à l'exécution de tous les tests. Vous devez configurer votre fichier specflow.json ou AssemblyInfo.cs pour activer l'exécution parallèle :

{
  "specFlow": {
    "runtime": {
      "testThreadCount": 4,
      "testSchedulingMode": "Parallel"
    }
  }
}

Cette configuration permet d'exécuter jusqu'à quatre tests en même temps.

Crochets sur mesure

Specflow vous permet de définir des crochets personnalisés. Ces crochets peuvent exécuter du code à différents moments du cycle de vie du test. Voici comment vous pouvez définir un crochet pour configurer une base de données avant l'exécution des tests :

[BeforeTestRun]
public static void SetUpDatabase()
{
    // Code to set up database
}
[BeforeTestRun]
public static void SetUpDatabase()
{
    // Code to set up database
}
<BeforeTestRun>
Public Shared Sub SetUpDatabase()
	' Code to set up database
End Sub
VB   C#

Les crochets personnalisés sont une fonctionnalité puissante. Ils vous aident à gérer les processus de préparation et de démontage des tests.

Cette section a couvert cinq fonctionnalités clés de Specflow qui peuvent améliorer votre cadre de test dans les projets .NET. Chaque fonctionnalité est conçue pour améliorer la flexibilité et l'efficacité de vos efforts d'automatisation des tests.

Intégration de Specflow C# avec IronPDF

Specflow C# (Comment ça marche pour les développeurs) : Figure 2

IronPDF est une bibliothèque pour C# qui permet aux développeurs de générer, de manipuler et de rendre des fichiers PDF dans des applications .NET. Cet outil puissant peut constituer un complément précieux à votre arsenal de tests lorsqu'il est utilisé avec Specflow, le logiciel Behavior-Driven Development (BDD) pour .NET.

En intégrant IronPDF, vous pouvez automatiser le test des sorties PDF dans vos applications, en vous assurant qu'elles répondent aux spécifications requises.

Cas d'utilisation de la fusion d'IronPDF avec Specflow C

Un cas d'utilisation pratique pour combiner IronPDF avec Specflow est de valider le contenu et le formatage d'un rapport PDF généré par votre application. Par exemple, vous pouvez tester automatiquement si un rapport contient des données correctes, s'il respecte la mise en page prévue et s'il est accessible dans les délais impartis. Cette intégration s'avère particulièrement utile dans les scénarios où une documentation précise, telle que les factures ou les rapports de conformité, est cruciale.

Assurez-vous d'avoir installé IronPDF. Vous pouvez l'installer en utilisant la console NuGet Package :

Install-Package IronPdf

Specflow C# (Comment ça marche pour les développeurs) : Figure 3

Exemple de code du cas d'utilisation

Voici un exemple de code complet qui montre comment mettre en place une définition d'étape SpecFlow pour tester un contenu PDF à l'aide d'IronPDF. Cet exemple suppose que vous testez un document PDF généré par votre application et devant contenir un texte spécifique :

using IronPdf;
using TechTalk.SpecFlow;

[Binding]
public class PdfContentSteps
{
    private string? _pdfPath;
    private PdfDocument? _pdfDocument;

    [Given(@"a PDF file generated at '(.*)'")]
    public void GivenAPDFFileGeneratedAt(string pdfPath)
    {
        _pdfPath = pdfPath;
        _pdfDocument = new PdfDocument(_pdfPath);
    }

    [Then(@"the PDF should contain the text '(.*)'")]
    public void ThenThePDFShouldContainTheText(string expectedText)
    {
        var textContent = _pdfDocument.ExtractAllText();
        if (!textContent.Contains(expectedText))
        {
            throw new Exception("PDF content does not contain the expected text.");
        }
    }
}
using IronPdf;
using TechTalk.SpecFlow;

[Binding]
public class PdfContentSteps
{
    private string? _pdfPath;
    private PdfDocument? _pdfDocument;

    [Given(@"a PDF file generated at '(.*)'")]
    public void GivenAPDFFileGeneratedAt(string pdfPath)
    {
        _pdfPath = pdfPath;
        _pdfDocument = new PdfDocument(_pdfPath);
    }

    [Then(@"the PDF should contain the text '(.*)'")]
    public void ThenThePDFShouldContainTheText(string expectedText)
    {
        var textContent = _pdfDocument.ExtractAllText();
        if (!textContent.Contains(expectedText))
        {
            throw new Exception("PDF content does not contain the expected text.");
        }
    }
}
Imports IronPdf
Imports TechTalk.SpecFlow

<Binding>
Public Class PdfContentSteps
'INSTANT VB WARNING: Nullable reference types have no equivalent in VB:
'ORIGINAL LINE: private string? _pdfPath;
	Private _pdfPath As String
	Private _pdfDocument? As PdfDocument

	<Given("a PDF file generated at '(.*)'")>
	Public Sub GivenAPDFFileGeneratedAt(ByVal pdfPath As String)
		_pdfPath = pdfPath
		_pdfDocument = New PdfDocument(_pdfPath)
	End Sub

	<[Then]("the PDF should contain the text '(.*)'")>
	Public Sub ThenThePDFShouldContainTheText(ByVal expectedText As String)
		Dim textContent = _pdfDocument.ExtractAllText()
		If Not textContent.Contains(expectedText) Then
			Throw New Exception("PDF content does not contain the expected text.")
		End If
	End Sub
End Class
VB   C#

Dans ce code, nous définissons une étape Specflow qui charge d'abord un PDF à partir d'un chemin spécifié et vérifie ensuite que ce PDF contient le texte attendu. La classe IronPdf.PdfDocument est utilisée pour charger et manipuler le fichier PDF. Cette configuration vous permet d'intégrer la validation des fichiers PDF dans vos tests automatisés, ce qui facilite la détection des erreurs.

Conclusion

Specflow C# (Comment ça marche pour les développeurs) : Figure 4

En résumé, la combinaison de Specflow C# et d'IronPDF renforce les capacités de vos projets .NET, en particulier lorsqu'il s'agit de documents PDF. Specflow excelle dans la définition et l'exécution de scénarios de test détaillés en langage clair.

IronPDF complète ce dispositif en offrant de solides capacités de manipulation des PDF. En intégrant ces deux outils puissants, vous pouvez rationaliser votre processus de test. Si vous souhaitez expérimenter ces fonctionnalités, IronPDF propose une version d'essai gratuite.

< PRÉCÉDENT
Octokit .NET (Comment ça marche pour les développeurs)
SUIVANT >
Dotnetopenauth .NET Core (Comment ça marche pour les développeurs)