SpecFlow - Generation error: Interface cannot be resolved

SpecFlow - Generation error: Interface cannot be resolved

我正在清理一个继承的测试自动化项目并修复了 SpecFlow 功能文件中场景名称中的一些拼写错误,然后开始收到此错误:

CS1029
#error Generation error: Interface cannot be resolved: TechTalk.SpecFlow.Generator.UnitTestProvider.IUnitTestGeneratorProvider('custom')

没有客户单元测试提供商。

我尝试过的事情:

现在,我所有的功能文件都显示该错误,而不仅仅是我修复拼写错误的文件。我使用的是 VS2015。有什么想法会导致此错误吗?

在 app.config 中,确保您使用的单元测试提供商名称与实际测试框架相对应。例如:

<specFlow>
   <unitTestProvider name="nUnit" />
</specFlow>

我怀疑测试是使用有效的 app.config 生成的,但 app.config 不再有效。当您更改功能文件时,它会导致它尝试使用无效的测试框架提供程序名称重新生成测试,从而导致您看到错误消息。

这似乎是 SpecFlow 2.2 功能文件损坏的问题。

对于 2.2,删除并重新创建功能文件并没有解决问题。恢复到 2.1 就可以了。

恢复到 2.1 后,错误仍然出现,直到我删除了功能文件然后重新创建它。我有 8 个功能文件,都报告了错误。删除并重新创建每个错误后,所有 8 个错误都消失了。