ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
Specflow C# は、振る舞い駆動開発 (Behavior-Driven Development) をサポートするオープンソースのテストフレームワークです。(BDD)それにより、テストシナリオのためのフィーチャファイルを作成することができます。 それは .NET フレームワーク プロジェクトとシームレスに統合されます。
テストを平易な言葉で説明できます。 このメソッドは、開発者と非開発者の協力を容易にします。 誰でもテストシナリオに貢献することができます。 Specflowは主に機能フォルダー内のすべてのテストを管理および実行するためにフィーチャーファイルを使用します。
一方、IronPDFは、.NET内でのPDF操作に特化したライブラリです。 PDFファイルの作成、編集、および読み取りを簡単に行うことができます。 HTMLを直接PDFに変換できます。 この機能は、アプリケーション内でレポートやドキュメントを生成する際に特に便利です。 IronPDFは、Core、Framework、およびStandardを含むさまざまなバージョンの.NETと互換性があります。
Specflow C# と IronPDF は異なる目的を果たしますが、どちらも開発者のツールキットにおいて貴重なツールです。 プロジェクト内で効果的に組み合わせることができます。 例えば、データを取得して処理する機能を定義およびテストするためにSpecflow C#を使用し、そのテスト結果に基づいてレポートを生成するためにIronPDFを利用することができます。 これSpecflowと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のTest Explorerと統合されており、そこですべてのテストを効率的に実行および管理できます。 これにより、テストを実行および管理することが簡単になります。 プロジェクトが正しく構成されていることを確認してください。 プロジェクトをビルドすると、テストはテストエクスプローラーに表示されます。 個別のテストを実行することも、すべてのテストを一度に実行することもできます。
Specflowは、全体の実行時間を短縮するために並行テストの実行をサポートしています。これにより、すべてのテストを実行するのにかかる時間が短縮されます。 specflow.json
ファイルまたは AssemblyInfo.cs
ファイルを設定して、並行実行を有効にする必要があります。
{
"specFlow": {
"runtime": {
"testThreadCount": 4,
"testSchedulingMode": "Parallel"
}
}
}
この構成では、最大4つのテストを同時に実行できます。
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
カスタムフックは強力な機能です。 彼らはテストのセットアップおよびティアダウンプロセスの管理を支援します。
このセクションでは、.NETプロジェクトにおけるテストフレームワークを強化できるSpecflowの5つの主要機能について説明しました。 各機能は、テスト自動化の柔軟性と効率を向上させるために設計されています。
IronPDFは、C#のライブラリであり、開発者が.NETアプリケーション内でPDFファイルを生成、操作、およびレンダリングすることを可能にします。 この強力なツールは、行動駆動開発(Behavior-Driven Development)と共にSpecflowで使用すると、テストの兵器として貴重な追加となります。(BDD).NET用のフレームワーク。
IronPDFを統合することで、アプリケーションのPDF出力のテストを自動化し、必要な仕様を満たしていることを確認できます。
IronPDF を Specflow と組み合わせて使用する実用的なユースケースは、アプリケーションによって生成された PDF レポートの内容とフォーマットを検証することです。 例えば、レポートが正しいデータを含んでいるか、予想されるレイアウトに従っているか、そして規定された要件内でアクセス可能かどうかを自動的にテストすることができます。 この統合は、請求書やコンプライアンスレポートのように、正確な文書が重要なシナリオにおいて特に有用です。
IronPDFをインストールしていることを確認してください。 NuGetパッケージコンソールを使用してインストールできます:
Install-Package IronPdf
以下は、IronPDF を使用して PDF コンテンツをテストするための SpecFlow ステップ定義を設定する方法を示す完全なコード例です。 この例では、特定のテキストを含むべきアプリケーションによって生成された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
このコードでは、指定されたパスからPDFを最初に読み込み、次にそのPDFが期待されるテキストを含んでいることを確認するSpecflowステップを定義します。 IronPdf.PdfDocument
クラスは、PDFファイルを読み込んで操作するために使用されます。このセットアップにより、自動テストにPDF検証を統合でき、エラーを見つけるのが容易になります。
要約すると、Specflow C#とIronPDFを組み合わせることで、特にPDFドキュメントを扱う際に、.NETプロジェクトの機能が強化されます。 Specflowは、平易な言葉を使用して詳細なテストシナリオを定義および実行することに優れています。
IronPDFは、強力なPDF操作機能を提供することでこれを補完します。 これらの2つの強力なツールを統合することで、テストプロセスを効率化することができます。 これらの機能を試してみたい方、IronPDFを無料で試す.
9つの .NET API製品 オフィス文書用