尝试运行SpecFlow NUnit测试时出错:"无法访问已处置的对象。对象名称:' GherkinLanguageService'"

时间:2016-06-28 09:36:11

标签: c# nunit specflow

我正在使用SpecFlow设置NUnit C#测试,但是我的SpecFlowFeature中声明的测试似乎不会被Text Explorer接收。尝试手动运行方案时(通过右键单击它们),我收到以下错误:

 "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
  • NUnitTestAdapter 2.0.0
  • Selenium.WebDriver 2.53.0
  • SpecFlow 2.1.0
  • SpecFlow.NUnit 2.1.0
  • SpecFlow.NUnit.Runners 2.1.0

2 个答案:

答案 0 :(得分:1)

查看此回购https://github.com/SabotageAndi/SpecFlow.Example.AllTestRunners中的代码,并将其与您的项目进行比较。

它包含NUnit 2和NUnit 3.2.1的SpecFlow项目 可以在Visual Studio测试资源管理器中看到NUnit测试。

首先我会尝试降级到NUnit的3.2.1。也许与NUnitTestAdapter有关的问题。

答案 1 :(得分:1)

问题是一个微妙的依赖问题。以前的版本使用NUnit 2.x,而我当前的版本使用NUnit 3.x;现在为了使用NUnit,我需要一个名为“NUnit Test Adapter”的NuGet包,但升级它是不够的:显然对于NUnit 3+,有一个名为“NUnit 3 Test Adapter”的不同的包。不仅仅是前一个版本的升级版本 - 而是一个完全不同的版本。

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