当使用来自不同装配的步骤定义时,转到定义 (F12) 不起作用。有没有办法让它工作?
5 回答
这可能是 Specflow 中的错误或类似问题。我有完全一样的问题。当尝试从功能文件转到步骤定义时,Visual Studio 说没有匹配的步骤绑定。虽然,在尝试运行测试时,它们运行正常,因此 Specflow 确实可以找到(并使用)匹配的步骤定义。
SpecFlow 1.8 Visual Studio 扩展不完全支持外部程序集中的绑定。这在他们的文档中有所说明。SpecFlow 支持它们,但 Visual Studio 扩展仅部分支持。我不确定 1.9 是否解决了这个问题。
这可能很明显,但请确保安装 SpecFlow 扩展。
工具 -> 扩展/更新 -> 在线 -> 搜索“Specflow”
我知道我晚饭有点晚了,但似乎 SpecFlow 将所有它的绑定数据存储在用户的 %temp% 文件夹中,并且这些文件是在功能文件和步骤文件之间映射的简单 .json 文件。
因此,当步骤与您的 .feature 文件位于相同的解决方案中时,SpecFlow 能够检测到正确的源文件和步骤方法的确切位置。
但是,当这些步骤在引用的 dll 中时,.json 配置文件不足以在 dll 中定位元数据,因此 F12 不起作用。
我猜这需要对引用的程序集进行某种设计时反射才能使 F12 工作。
@ShonnLyga 非常感谢这非常有用
要从 DLL 引用程序集,您现在可以使用
<specFlow>
<unitTestProvider name="NUnit" />
<stepAssemblies>
<stepAssembly assembly="YourDLLname" />
</stepAssemblies>
</specFlow>