.NET 帮助

Specflow C#(它如何为开发人员工作)

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
2024年七月1日
分享:

Specflow C

Specflow C# 是一个支持行为驱动开发的开源测试框架(BDD)此外,您还可以使用该工具创建测试场景的功能文件。 它可与 .NET Framework 项目无缝集成。

您可以用通俗易懂的语言描述测试。 这种方法有利于开发人员和非开发人员之间的合作。 每个人都可以为测试场景做出贡献。 Specflow 主要使用特性文件来管理和执行特性文件夹中的所有测试。

IronPDF 则是一个专注于在 .NET 中进行 PDF 操作的库。 它可以让您轻松创建、编辑和阅读 PDF 文件。 您可以将 HTML 直接转换为 PDF。 该功能对于在应用程序中生成报告或文档尤其有用。 IronPDF 兼容各种版本的 .NET,包括 Core、Framework 和 Standard。

尽管 Specflow C# 和 IronPDF 的用途不同,但它们都是开发人员工具包中的重要工具。 它们可以在一个项目中有效结合。 例如,您可以使用 Specflow C# 来定义和测试一个检索和处理数据的功能,然后采用 IronPDF 根据测试结果生成报告。 ThisSpecflow 和 IronPDF 集成教程本手册将向您展示这些工具如何协同工作,以增强您的应用程序开发流程。

Specflow C# 入门

在 .NET 项目中设置 Specflow

要开始在 .NET 项目中使用 Specflow,您首先需要安装 Specflow NuGet 软件包,以设置测试框架、创建特征文件并定义测试场景。

  1. 打开 Visual Studio。

  2. 创建一个新的 .NET 项目或打开一个现有项目。

  3. 转到扩展菜单,然后管理扩展。

  4. 搜索 "Specflow"。 安装 Specflow 扩展。

    Specflow C#(如何为开发人员工作):图 1

基本代码示例

设置好 Specflow 后,您就可以创建第一个功能文件,该文件将存放在功能文件夹中。 Specflow 中的特性文件以可读格式概述了您要测试的行为。 下面是一个如何创建新功能文件和定义场景的简单示例:

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

该功能文件描述了一个基本的登录过程。 Given "为测试设置场景。当 "描述动作。 然后 "定义了预期结果。 您要用通俗易懂的英语撰写这些说明。 这样,测试的流程和目的就很容易理解了。

实现 Specflow C# 的功能

使用步骤定义编写测试

在 Specflow 中,测试由功能文件中列出的场景驱动。 要使这些场景可执行,您需要步骤定义。 步骤定义将纯语言步骤与 C# 代码绑定。 以下是如何定义步骤定义:

[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
    }
}

这个 C# 类表示登录场景的步骤。 每个方法都标记了与步骤类型相对应的 Specflow 属性,例如用于识别特定步骤的字符串键。

数据驱动测试

Specflow 支持数据驱动测试,允许您在场景中使用各种测试数据集。 这样,您就可以使用各种数据集来测试场景。 下面是一个使用功能文件中的表格的示例:

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

在步骤定义中,您可以通过以下方式访问这些数据:

[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
    }
}

与测试资源管理器集成

Specflow 与 Visual Studio 的测试资源管理器集成,您可以在其中高效地运行和管理所有测试。 这样可以方便运行和管理您的测试。 确保您的项目配置正确。 构建项目后,您的测试将出现在 Test Explorer 中。 您可以运行单个测试,也可以一次性运行所有测试。

并行测试执行

Specflow 支持运行并行测试,以减少整体执行时间。这样可以减少执行所有测试所需的时间。 您需要配置您的 specflow.json 文件或 AssemblyInfo.cs 以启用并行执行:

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

这种配置最多可同时运行四个测试。

自定义钩子

Specflow 允许您定义自定义钩子。 这些钩子可以在测试生命周期的不同阶段执行代码。 以下是如何在任何测试运行之前定义一个用于设置数据库的钩子:

[BeforeTestRun]
public static void SetUpDatabase()
{
    // Code to set up database
}
[BeforeTestRun]
public static void SetUpDatabase()
{
    // Code to set up database
}

自定义钩子是一项强大的功能。 它们可帮助您管理测试设置和拆卸流程。

本节介绍了 Specflow 的五个主要功能,这些功能可以增强您在 .NET 项目中的测试框架。 每个功能都旨在提高测试自动化工作的灵活性和效率。

将 Specflow C# 与 IronPDF 相结合

Specflow C#(如何为开发人员工作):图 2

IronPDF 是一个 C# 库,允许开发人员在 .NET 应用程序中生成、处理和渲染 PDF 文件。 当与 Specflow(行为驱动开发工具)一起使用时,这一功能强大的工具将成为您测试武器库中的重要补充。(BDD)译文要求:.NET Framework。

通过集成 IronPDF,您可以在应用程序中自动测试 PDF 输出,确保它们符合所需的规范。

IronPdf 与 Specflow C# 合并的使用案例

IronPDF 与 Specflow 结合的一个实际用例是验证应用程序生成的 PDF 报告的内容和格式。 例如,您可以自动测试报告是否包含正确的数据、是否符合预期的布局以及是否可以在规定的要求内访问。 事实证明,在发票或合规报告等准确文档至关重要的情况下,这种集成尤其有用。

确保您已安装 IronPDF。 您可以使用 NuGet 软件包控制台进行安装:

Install-Package IronPdf

Specflow C#(如何为开发人员工作):图 3

用例代码示例

下面是一个完整的代码示例,演示了如何设置 SpecFlow 步骤定义,使用 IronPdf 测试 PDF 内容。 本示例假定您正在测试由应用程序生成的 PDF 文档,该文档应包含特定文本:

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.");
        }
    }
}

在这段代码中,我们定义了一个 Specflow 步骤,该步骤首先从指定路径加载 PDF,然后验证该 PDF 是否包含预期文本。 IronPdf.PdfDocument` 类用于加载和操作 PDF 文件。通过这种设置,您可以将 PDF 验证集成到自动化测试中,从而更轻松地捕捉错误。

结论

Specflow C#(如何为开发人员工作):图 4

总之,将 Specflow C# 与 IronPDF for .NET 结合使用,可以增强您的 .NET 项目的功能,尤其是在处理 PDF 文档时。 Specflow 擅长使用通俗易懂的语言定义和执行详细的测试方案。

IronPdf 通过提供强大的 PDF 操作功能对此进行了补充。 通过整合这两个强大的工具,您可以简化测试流程。 如果您想尝试使用这些功能、免费试用 IronPDF.

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 运用技能时,他会进行游戏编程。作为产品测试、产品开发和研究的负责人之一,Jordi 为持续的产品改进增添了极大的价值。多样化的经验让他充满挑战和参与感,他说这是他在 Iron Software 工作中最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。
< 前一页
Octokit .NET(开发人员如何使用)
下一步 >
DotNetOpenAuth .NET Core(开发人员工作原理)