【问题标题】:How to get SpecFlow working with xUnit.net as the test runner如何让 SpecFlow 使用 xUnit.net 作为测试运行器
【发布时间】:2011-02-12 22:51:21
【问题描述】:

我正在尝试使用 xUnit.net 作为 SpecFlow 的测试运行器。官方下载区的 SpecFlow 1.2 二进制文件不包含 xUnit.net 提供程序,但 GitHub 上的主分支有一个,所以我从那里构建 SpecFlow.Core.dll。我正在使用 xUnit.net 1.5。

但是,当我在我的规范项目中更改 app.config 中的 unitTestProvider 名称时,我得到一个空引用自定义工具错误,并且生成的 .feature.cs 文件是单行:

Object reference not set to an instance of an object.

有没有人成功让 SpecFlow 与 xUnit.net 一起工作?如果有,怎么做?

【问题讨论】:

    标签: xunit.net specflow


    【解决方案1】:

    我刚刚遇到了同样的问题并找到了答案。只需使用 SpecFlow 的最新版本,我使用的是 1.3.5.2。 然后,您所要做的就是添加对 xUnit.dll 的引用,并使用以下配置为您的 Specs 项目创建一个 App.config 文件:

    <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
        <configSections>
           <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/>
        </configSections>
    
        <specFlow>
           <language feature="en-US" />
             <unitTestProvider name="xUnit" />
    
             <runtime detectAmbiguousMatches="true" stopAtFirstError="false"
                     missingOrPendingStepsOutcome="Inconclusive" />
    
             <trace traceSuccessfulSteps="true" traceTimings="false"
                 minTracedDuration="0:0:0.1" />
        </specFlow>
      </configuration>
    

    这里发挥作用的部分是 unitTestProvider 元素。

    【讨论】:

    • 谢谢,但我说它已于 2010 年 5 月 4 日修复。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      SpecFlow-Example 存储库中有一个带有 xUnit 的 SpecFlow 示例:

      http://github.com/techtalk/SpecFlow-Examples/tree/master/BowlingKata/BowlingKata-XUnit

      为了运行它,您必须从 github(主分支)上的最新源构建 SpecFlow。 您还应该安装 SpecFlow 1.2 以获得正确的 VisualStudio 集成。 然后将安装目录中的所有程序集(默认 Program Files (x86)\TechTalk\SpecFlow)替换为从源代码构建的程序集。

      在此之后,您应该能够构建并运行上述 SpecFlow-Example 项目。

      希望这有帮助吗?

      【讨论】:

      • 我是否需要下载并安装 VS 集成的东西才能从源代码构建?另外,我没有安装VB。因此,VS 集成项目在解决方案中不可用,并且测试失败,因为它们无法加载 ExternalStepsVB。
      • 另外,VS 在保龄球 kata xunit 示例中找不到对 TechTalk.SpecFlow.dll 和 xunit.dll 的引用。
      • 我已经删除了缺失的引用并添加了正确的引用,但是在 TD.Net 中运行测试会给出源自 SpecFlow.ObjectContainer 的空引用异常。似乎代码缺少空检查:-(
      • 谢谢。最近在 GitHub 上的提交已修复它。
      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2014-07-16
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多