对于我的 SpecFlow 测试,我想在测试执行期间设置测试进度的单独日志记录/跟踪。例如。我想写

  • 所有通过/失败的步骤
  • 开始/结束场景
  • 开始/结束功能

  • 到 windows 事件日志(以便将其与测试期间其他系统组件生成的事件日志消息同步)。

    我尝试使用 [BeforeFeature]、[BeforeScenario]、[BeforeStep] 钩子(Hook)来做这件事,但结果我在这个钩子(Hook)中没有所有必需的信息。例如。我不知道如何获取当前步骤执行的当前文本行(包括行信息等)或当前步骤的结果(失败/通过)。

    有没有办法在这些钩子(Hook)中或在测试执行期间以任何其他方式获取这些信息?

    如果不:
    有没有办法以任何其他方式自定义 Specflow 创建的跟踪输出?

    最佳答案

    为了提供 ITestTracer 的自定义实现,您应该为 SpecFlow 创建一个插件。

    创建一个名为 CustomTracer.SpecflowPlugin 的类库项目。 CustomTracer 是您选择的插件名称。

    然后将以下代码放入您的新程序集中

    [assembly: RuntimePlugin(typeof(CustomTracer.SpecflowPlugin.CustomTracerPlugin))]
    
    namespace CustomTracer.SpecflowPlugin
    {
        public class CustomTracerPlugin : IRuntimePlugin
        {
            public void RegisterDependencies(ObjectContainer container)
            {
    
            }
    
            public void RegisterCustomizations(ObjectContainer container, RuntimeConfiguration runtimeConfiguration)
            {
                container.RegisterTypeAs<CustomTracer, ITestTracer>();
            }
    
            public void RegisterConfigurationDefaults(RuntimeConfiguration runtimeConfiguration)
            {
    
            }
        }
    
        public class CustomTracer : ITestTracer
        {
            // Your implementation here
        }
    }
    

    编译程序集并将其放入规范所在的项目文件夹(.csprog 文件所在的位置)。

    编辑 app.config,specFlow 部分以包括:
    <plugins>
      <add name="CustomTracer" path="." type="Runtime"/>
    </plugins>
    

    这就对了。您的插件应该加载并且您的自定义 ITracer 实现应该在场景执行期间被调用。如果您在调试下运行场景,您甚至可以调试它。

    关于c# - 如何使用 SpecFlow 设置个人跟踪/日志记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22361281/

    10-17 00:46