C# 尝试运行SpecFlow NUnit测试时出错:“0”;无法访问已释放的对象。对象名称:';小黄瓜语言服务'&引用;

C# 尝试运行SpecFlow NUnit测试时出错:“0”;无法访问已释放的对象。对象名称:';小黄瓜语言服务'&引用;,c#,nunit,specflow,C#,Nunit,Specflow,我正在使用SpecFlow设置NUnit C#测试,但是我的SpecFlowFeature中声明的那些测试似乎没有被文本浏览器选中。当尝试手动运行场景(通过右键单击它们)时,我得到以下错误: "Cannot access a disposed object. Object name: 'GherkinLanguageService'" …一点也不响。有人对如何允许他们跑步有什么建议吗 功能部件代码如下所示: Feature: SpecFlowFeature As a user

我正在使用SpecFlow设置NUnit C#测试,但是我的SpecFlowFeature中声明的那些测试似乎没有被文本浏览器选中。当尝试手动运行场景(通过右键单击它们)时,我得到以下错误:

 "Cannot access a disposed object. Object name: 'GherkinLanguageService'"
…一点也不响。有人对如何允许他们跑步有什么建议吗

功能部件代码如下所示:

Feature: SpecFlowFeature
    As a user
    I would like to go to the what we do page
    In order to see what we do information

@UI
Scenario: What we do Browsing
    Given I have the home page open
    When I select what we do from the menu
    Then I see the what we do information

@UI
Scenario: Add an Asset to a Client page
    Given I have the home page open
    When I go to a client page
    And I click the Add Download button
    And I fill in the form
    And I choose a file to upload
    And I submit the form
    Then I see the newly-submitted file
步骤定义都是自动生成的

编辑:我的测试项目中已安装的NuGet软件包列表:

  • Microsoft.Net.Compilers 1.1.0-rc1
  • NUnit 3.4.0
  • NunitestAdapter 2.0.0
  • Selenium.WebDriver 2.53.0
  • SpecFlow 2.1.0
  • SpecFlow.NUnit 2.1.0
  • SpecFlow.NUnit.Runners 2.1.0

查看此回购协议中的代码,并将其与您的项目进行比较

它包含NUnit 2和NUnit 3.2.1的SpecFlow项目。
在那里,NUnit测试在VisualStudio测试资源管理器中可见


首先,我会尝试将NUnit降级到3.2.1。也许NUnitestAdapter有一些问题。

这个问题是一个微妙的依赖性问题。以前的版本使用NUnit2.x,而我的当前版本使用NUnit3.x;现在为了使用NUnit,我需要一个名为“NUnit测试适配器”的NuGet包,但升级它是不够的:显然,对于NUnit 3+来说,有一个名为“NUnit 3测试适配器”的不同包,它不仅是前一个包的升级版本,而且是完全不同的版本


安装NUnit 3测试适配器解决了我的问题。

能否添加代码?添加了SpecFlowFeature。你还需要什么?其余的代码是从该功能自动生成的,不存在生成错误。这些函数中有代码吗?或者它仍然只是默认的空生成的?是的,有代码,但我在测试运行之前收到了此错误消息-我甚至在第一个方法中放入了日志消息,它永远不会运行。@EmanueleCiriachi:请指定您的SpecFlow版本和测试项目中已安装的NuGet包的列表。