【问题标题】:SpecFlow: "Step bindings are still being analyzed. Please wait."SpecFlow:“步骤绑定仍在分析中。请稍候。”
【发布时间】:2012-08-08 10:38:58
【问题描述】:

每当我右键单击场景并“生成步骤定义”或“转到步骤定义”时,我都会收到相同的消息。

我第一次尝试时它成功了,但从那以后就没有了。

我已经提交了错误报告,但与此同时,有人知道如何解决这个问题吗?

【问题讨论】:

  • 步骤是自动生成的,所以我不确定你从哪里来。
  • @AdamHouldsworth 该问题通常会在右键单击转到步骤定义时出现。如果您还没有得到一个,这也会生成一个虚拟步骤。我想这就是 OP 的意思
  • @AdamHouldsworth 我试着说明我在做什么。

标签: c# visual-studio bdd specflow


【解决方案1】:

五年多之后,我遇到了同样的问题......这是对我有用的解决方案:

  1. 在 Visual Studio 中关闭解决方案。
  2. 在 Windows 资源管理器中转到您的临时目录(在位置栏中输入 %temp%)。
  3. 删除“specflow-blah-blah.cache”文件。
  4. 在 Visual Studio 中重新加载解决方案,重新构建解决方案,并给 SpecFlow 一点时间自行解决。

【讨论】:

    【解决方案2】:

    我之前遇到过这个问题,我们的一个项目中有大约 800 个 SF 测试,当我们第一次加载时,有时可能需要很长时间才能加载。对我来说,它总是最终会自行解决。

    另一件事是升级到几天前发布的 1.9,它可能会提高性能。

    【讨论】:

    • 这是我在项目中的第一个功能,所以绝对不应该花这么长时间。我也在使用 VS2010、SpecFlow 1.9.0、SpecFlow.NUnit 1.1.1。
    • 哦,好的,在这种情况下,它应该接近即时。
    • 似乎有些人有问题,加斯帕通常反应很快,所以我想看看他怎么说。 groups.google.com/forum/?fromgroups#!topic/specflow/…
    【解决方案3】:

    虽然我使用的是最后一个 (1.9.2),但我遇到了同样的问题。重新打开 VS2010 解决了这个问题。

    【讨论】:

      【解决方案4】:

      我找到了解决这个问题的方法;关闭解决方案并删除 .SOU 文件。重新打开解决方案,然后重新创建此文件,然后 SpecFlow 上下文菜单选项起作用。

      【讨论】:

        【解决方案5】:

        当我将外部程序集从 app.config 移动到 specflow.json 文件时,我遇到了同样的问题

        1) 结果我得到了一个甚至没有 specflow nuget 的程序集引用。

        2) 我重命名了一个程序集,但由于某些原因,旧名称未在 AssemblyInfo.cs 文件中替换。我手动更改了它,清理了项目。清理了 specflow 缓存(请参阅以前的答案如何执行此操作)并且它起作用了。

        因此,请检查所有引用和程序集名称是否正确。

        干杯

        附:不要忘记为 specflow.json 设置“复制到输出目录”选项:D

        【讨论】:

          【解决方案6】:

          如果您仍然无法强制步骤绑定,但只需要获取给定步骤的定义

          1. 在场景的第一步放置断点
          2. 调试测试
          3. 进入函数(默认F11)
          4. 你来了! VS 导航可能不起作用,但调试器知道方法:)

          我知道这可能不是解决步骤不绑定的原始问题的直接解决方案,但我认为它到达了 OP 想要去的地方......

          【讨论】:

            【解决方案7】:

            此问题的根本原因是您的代码性能不佳,导致 Visual Studio 运行缓慢并挂起,或者由于代码性能低下,Visual Studio 处于无响应状态。

            解决方案是提高代码的性能。您需要以所有可能的方式优化您的代码:

            1. 在每个步骤中使用更少的输入
            2. 在参数化方法中使用更少的参数
            3. 避免不必要的循环
            4. 如果取5个以上的参数,将数字参数分成更多的方法。它将提高性能。
            5. 将输入值分成更多的子步骤或单独的步骤,这将提高代码的性能和速度。
            6. 如果有更多 case,请使用 switch case 而不是 if else 语句。
            7. 如果引用变量或对象不再使用,则释放占用的内存。
            8. 从外部源读取数据并将它们存储到本地对象或列表中,并最小化使其一次从外部源读取一次并访问本地复制到列表或任何其他对象/变量中的值。
            9. 关闭或关闭外部文件或在使用后调用它们。

            希望这是提高代码性能的最佳方式,并且这个问题肯定不会发生,并且您的步骤绑定和定义会更加流畅和轻松。

            【讨论】:

            • 感谢您的回答,但绝对不是应用程序,即使是一个简单的项目和一个琐碎的场景和步骤定义也会出现问题。
            【解决方案8】:

            我们这样修复它:

            1. 关闭 Visual Studio
            2. 删除了项目下的objbin 文件夹,
            3. 再次打开 Visual Studio。
            4. 重建

            在那之后,.feature 文件“复活了”

            【讨论】:

              猜你喜欢
              • 2021-07-25
              • 1970-01-01
              • 1970-01-01
              • 2011-07-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-10
              相关资源
              最近更新 更多