在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
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 整合教程展示這些工具如何協同工作來增強您的應用程式開發過程。
要開始在您的 .NET 專案中使用 Specflow,首先需要安裝 Specflow NuGet 套件,以設定您的測試框架、建立功能文件並定義測試場景。
打開 Visual Studio。
創建一個新的 .NET 專案或打開一個現有的專案。
前往擴充功能選單,然後管理擴充功能。
搜尋 "Specflow"。 安裝 Specflow 擴展。
一旦 Specflow 設置完成,您可以創建第一個功能文件,該文件將位於 features 資料夾中。 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
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
此功能文件描述了一個基本的登入過程。 Given
為測試設定場景。When
描述動作。 Then
定義預期結果。 您用簡單的英文寫下這些語句。 這使理解測試的流程和目的變得容易。
在 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
}
}
<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
這個 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
Scenario:
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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
}
}
<[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
Specflow 與 Visual Studio 的測試探索器整合,您可以在那裡高效地執行和管理所有測試。 這使您能夠輕鬆執行和管理您的測試。 確保您的專案配置正確。 建置專案後,您的測試將顯示在測試總管中。 您可以單獨執行測試或一次性執行所有測試。
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
}
<BeforeTestRun>
Public Shared Sub SetUpDatabase()
' Code to set up database
End Sub
自定義鉤子是一個強大的功能。 它們幫助您管理測試設置和拆卸過程。
本節介紹了 Specflow 的五個關鍵功能,這些功能可以增強 .NET 專案中的測試框架。 每項功能都旨在提高測試自動化工作的靈活性和效率。
IronPDF 是一個 C# 函式庫,允許開發者在 .NET 應用程式中生成、操作和渲染 PDF 檔案。 當與 Specflow 這種行為驅動開發工具結合使用時,這款強大的工具可以成為您測試工具中的寶貴成員。(BDD)框架用於 .NET。
通過整合 IronPDF,您可以自動化測試應用程式中的 PDF 輸出,確保它們符合所需規格。
將IronPDF與Specflow結合的一個實際用例是驗證您的應用程序生成的PDF報告的內容和格式。 例如,您可以自動測試報告是否包含正確的數據、符合預期的版面設計,並在規定的要求內可供訪問。 此整合在需要準確文檔(如發票或合規報告)的情境中特別有用。
確保您已安裝IronPDF。 您可以通過 NuGet 套件控制台安裝它:
Install-Package IronPdf
以下是完整的代碼範例,演示如何設置 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.");
}
}
}
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
在此程式碼中,我們定義了一個 Specflow 步驟,該步驟首先從指定路徑載入 PDF,然後驗證此 PDF 是否包含預期的文本。 IronPdf.PdfDocument
類別用於加載和操作 PDF 文件。此設置允許您將 PDF 驗證集成到自動化測試中,從而更容易捕捉錯誤。
總而言之,結合 Specflow C# 和 IronPDF 能夠增強您的 .NET 專案的功能,特別是在處理 PDF 文件時。 Specflow 在使用簡單語言定義和執行詳細測試場景方面表現出色。
IronPDF透過提供強大的PDF操控功能來補充這一點。 透過整合這兩個強大的工具,您可以簡化測試流程。 如果您正在尋找體驗這些功能,免費試用 IronPDF.