【问题标题】:SpecFlow - Generation error: Interface cannot be resolvedSpecFlow - 生成错误:无法解析接口
【发布时间】:2017-07-20 07:24:10
【问题描述】:

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

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

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

我尝试过的事情:

现在,我所有的功能文件都显示该错误,而不仅仅是我修复拼写错误的那个。我使用的是 VS2015。任何想法可能导致此错误?

【问题讨论】:

  • 你有自定义插件吗?您能否发布 app.config 的完整规范流部分?
  • 您使用的是哪个版本的 SpecFlow+?
  • @AndreasWillich,Per 下面,正在使用 2.2,恢复到 2.1,问题就消失了。 app.config 部分如下所示:

标签: c# visual-studio specflow


【解决方案1】:

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

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

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

【讨论】:

  • 它是 MsTest.2010。我将其更改为更通用的 MsTest,但并没有解决问题,因此将其更改回 MsTest.2010。此外,我在几个小时前重建了这个项目,然后它就可以正常运行了。我已经看到这个错误发生在另一次应用了无效标签的情况下。删除标签清除了问题。但是在这种情况下没有标签。
【解决方案2】:

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

在 2.2 中,删除并重新创建功能文件并没有解决问题。恢复到 2.1 确实如此。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多