从 SpecFlow 中的场景获取当前步骤定义

Get current Step definition from of a Scenario in SpecFlow

我正在为一个名为 CodeSpec and it is built on top of SpecFlow 的框架做贡献。

使用 ScenarioContext 我可以获得当前正在执行的场景的标题。但我也想获得步骤定义。

假设场景是

Scenario: Google for Cats
Given I navigate to "http://google.com"
And I enter value "Cats" to the "searchBox" with the "id" of "lst-ib"
And I click on element "searchButton" with the "xpath" of "id('sblsbb')/button" and wait "4" seconds
Then The page contains text pattern "The domestic cat is"

我可以用下面的代码得到标题,

[AfterScenario("UIAutomationReport")]
public static void AfterScenario()
{
    var title = ScenarioContext.Current.ScenarioInfo.Title;
   //title now is "Google for Cats"
    
}

我也想得到步骤定义 Given I navigate to "http://google.com"And I enter value "Cats" to the "searchBox" with the "id" of "lst-ib"

我该怎么做?

您可以找到来电者姓名和来电者属性

StackFrame 框架 = new StackFrame(1);

MethodBase 方法=frame.GetMethod();

消息 = String.Format("{0}.{1} : {2}", method.DeclaringType.FullName, method.Name, 留言);

Console.WriteLine(留言);

C# Method Caller

在属性中是 Specflow 步骤描述

在当前版本的 specflow 中无法获取此信息,但在下一个版本 (v2) 中,有关 step text and step type will be available from the ScenarioStepContext class

的信息

您可以从 CI build nuget feed.

获取新版本的测试版

您可以使用以下代码来获取您的步骤定义:

String title = ScenarioContext.Current.StepContext.StepInfo.Text; 

Console.WriteLine("Step Definition Title : " + title);