对于我的 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/