三种类型的 Specflow 插件(Runtime、Generator、Runtime/Generator)有什么区别?

What is the difference between the three types of Specflow Plugins (Runtime, Generator, Runtime/Generator)?

Specflow 支持的三种不同类型的自定义插件有什么区别?我现在正在为 CodedUI 制作一个生成器插件,这个问题一遍又一遍地闪过我的脑海,文档要么含糊不清,要么不完整,所以我想我会问这里的社区,他们是否可以给我一个关于两者之间差异的明确、具体的解释运行时、生成器和 runtime/generator 插件。当添加插件时,他们做什么以及如何改变 Specflow 的功能?

虽然知道如何编写它们很有用,但我也想知道我正在使用的东西背后的理论,而文档在这方面相当沉默。

SpecFlow 目前的工作方式是在设计或编译时将功能文件转换为 .NET (C#/VB) 测试 类。这些生成的 类 位于 MyStuff.feature.cs 文件中。

一旦您运行 从生成的文件中测试(SpecFlow 场景),他们就会使用 SpecFlow 运行时间来查找步骤定义、挂钩以及为场景步骤。

生成器插件可以影响设计或编译时代码生成(例如,您可以为测试方法生成一个特殊属性)。运行时插件可以影响测试的执行(例如添加特殊日志记录)。 runtime/generator 只是一个改变两者的插件。

在设计或编译时加载和执行生成器插件时,您必须确保所有插件依赖项都可用。例如。您不能从您的应用程序中引用其中一个项目,因为在必须已经执行生成器时,这些项目可能尚未完成。