You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Reqnroll中提取所有可用步骤?需替代现有反射方案

在Reqnroll中提取所有测试步骤的标准实现方式

方法一:利用Reqnroll内置的IBindingRegistry API

Reqnroll提供了官方API来获取所有已注册的步骤定义,无需手动反射。核心是通过IBindingRegistry接口访问全局注册的步骤集合:

using Reqnroll.Bindings;
using Reqnroll.Infrastructure;

// 获取全局绑定注册器实例
var bindingRegistry = ObjectContainer.Instance.Resolve<IBindingRegistry>();
// 提取所有已定义的步骤
var allStepDefinitions = bindingRegistry.StepDefinitions;

foreach (var stepDef in allStepDefinitions)
{
    // 获取步骤的文本模板(比如"我输入{username}作为用户名")
    var stepTemplate = stepDef.StepDefinitionType.GetStepText();
    // 获取步骤对应的实现方法信息
    var methodDetails = $"{stepDef.MethodInfo.DeclaringType.Name}.{stepDef.MethodInfo.Name}";
    
    Console.WriteLine($"步骤模板: {stepTemplate}, 实现方法: {methodDetails}");
}

这个API会自动识别所有通过[Given]/[When]/[Then]特性标记的步骤,是官方推荐的标准方案。

方法二:测试执行时提取当前场景的步骤

如果需要在测试运行过程中获取当前场景的具体执行步骤,可以通过ScenarioContext实现:

using Reqnroll;

[Then("查看当前场景的所有执行步骤")]
public void ThenCheckAllStepsInCurrentScenario()
{
    var scenarioSteps = ScenarioContext.Current.ScenarioInfo.Steps;
    
    foreach (var step in scenarioSteps)
    {
        Console.WriteLine($"步骤类型: {step.StepType}, 步骤内容: {step.Text}");
    }
}

这种方式针对的是当前运行场景的步骤集合,而非全局所有已定义的步骤。

方法三:编译阶段收集步骤定义

如果需要提前在编译阶段提取所有步骤(比如生成测试文档、统计用例),可以自定义Reqnroll代码生成插件:

using Reqnroll.Generator;
using Reqnroll.Generator.Interfaces;

public class StepCollectorPlugin : ICodeGeneratorPlugin
{
    public void GenerateCode(CodeGeneratorContext context)
    {
        foreach (var stepDef in context.StepDefinitions)
        {
            // 收集步骤模板、参数类型等信息
            var stepText = stepDef.StepText;
            var paramCount = stepDef.Parameters.Count;
            
            // 可将信息写入文件或存储到指定位置
            System.IO.File.AppendAllText("steps_collection.txt", $"步骤: {stepText}, 参数数量: {paramCount}\n");
        }
    }
}

然后在项目的reqnroll.json中注册该插件:

{
  "generatorPlugins": [
    "YourNamespace.StepCollectorPlugin, YourAssemblyName"
  ]
}

内容的提问来源于stack exchange,提问作者user384884

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:14:50