【问题标题】:file not found exception running specflow test with codedui in visualstudio 2013在 Visual Studio 2013 中使用编码 ui 运行 specflow 测试的文件未找到异常
【发布时间】:2015-02-02 11:42:23
【问题描述】:

我整个上午都在网上寻找答案,我尝试了很多建议,尽管所有解决方案似乎都适用于 Visual Studio 2010 并且我正在运行 2013 高级版,但我看不到任何人同样的问题。

我有高级 VS 2013,我通过扩展管理器安装了 SpecFlow v1.9 并添加了 SpecFlow nuget 包。我创建了一个 CodedUI 测试项目并添加了一个功能文件、一些记录的 codedui 步骤和一个 stepdef 文件。没有什么可抱怨的,这一切看起来都应该奏效。我已经添加了 : <unitTestProvider name="MsTest"/> 到我的 App.config 以便我可以从 Visual Studio 中的测试资源管理器运行它。我最终想通过 MTM 运行测试,但是当我让它工作时我会处理这个问题!

我已经构建并且一切都很开心,所以我去测试资源管理器,我可以看到我的测试,所以我右键单击,运行测试。它失败并出现以下错误,当我调试并尝试打开我的应用程序时,它确实到达了我的 Given 步骤。

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestTools.UITest.WindowsStoreUtility, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

当我试图将它添加到我的项目引用中时,我找不到上面的引用,有一个类似的,但是当我添加它时它破坏了我的一些其他引用。我还查看了我的注册表文件,它所指的路径不存在,我无法对其进行编辑。从我读到的内容来看,没有 dll 文件的 codedui 不能很好地与 specflow 一起工作。对此修复的所有引用似乎都是针对 vs 2010 的,并且要求我将 dll 复制到我的 specflow 源文件夹。我从visual studio安装了specflow,所以我没有程序文件夹,所以我对那个解决方案有点棘手。

是否有人拥有使用 Visual Studio 2013 和 codedui 测试项目的 specflow?我错过了设置步骤吗?或者这真的与我的注册表文件/参考有关。该错误令人困惑,因为我不明白它为什么要尝试查找该引用,尤其是当我尝试手动查找时在任何地方都找不到该引用时。我很想知道您是否遇到此错误并设法解决它,或者您是否可以解释您的设置步骤,以便我可以检查我没有遗漏任何内容。

谢谢!

【问题讨论】:

  • 您的 specflow 将安装在扩展文件夹中。我的建议是安装 void 工具中的所有内容,然后搜索 techtalk.specflow.dll,然后将 2010 修复程序中的 dll 放入安装扩展程序的文件夹中。

标签: visual-studio-2013 coded-ui-tests specflow


【解决方案1】:

我相信您可能缺少对某些必需 dll 的引用。我刚刚在我的 MS Visual Studio 2013 终极版上完成了使用 Specflow、codedUI 测试项目创建的测试,它运行良好。

以下是我遵循的步骤:

  1. 创建了一个类库项目。
  2. 从扩展和更新中添加了对 Specflow 1.9 的引用。
  3. 添加了对 Specflow CodedUI 属性生成器的引用(Install-Package SpecFlow.CodedUI -Version 1.0.0.23)。
  4. 添加了对项目所需的 CodedUI 和测试工具所需库的引用。请参阅下面我添加的参考资料。

    Microsoft.VisualStudio.QualityTools.CodedUITestFramework Microsoft.VisualStudio.QualityTools.UnitTestFramework Microsoft.VisualStudio.TestTools.UITest.Common Microsoft.VisualStudio.TestTools.UITest.Extension Microsoft.VisualStudio.TestTools.UITest.ExtensionUtilities Microsoft.VisualStudio.TestTools.UITesting

  5. 向解决方案添加了单独的 CodedUI 项目,并将该项目的引用添加到类库项目中。

  6. 使用一些测试创建一个新的 Specflow 功能文件,并在步骤定义中为其创建步骤,并在步骤定义中引用您在 CodedUI 项目中创建或记录的函数。

  7. 从测试资源管理器运行 Specflow 测试。它应该可以正常工作。

注意:如果您将创建 CodedUI 项目而不是类库项目,上述步骤应该可以正常工作。

【讨论】:

  • 谢谢,我创建了解决方案,添加了引用,然后将它创建的所有 dll 复制到我的解决方案中,现在它正在从测试资源管理器运行测试。非常感谢您的帮助!
  • Iain 真的很有帮助,我的声誉分数还不够高,所以当我尝试投票时它在抱怨我,但当我的分数提高时我会回来,谢谢你非常感谢您的帮助。
【解决方案2】:

CodedUITest 属性标记测试类。

【讨论】:

  • 这正是我的问题。我进行了 selenium 测试,但需要添加一些与桌面客户端应用程序的交互。使用编码的 UI 库添加桌面客户端控件的视图后,尝试访问控件时出现错误。好吧,我的测试类都标记为[TestClass] 而不是[CodedUITest] 更正解决了错误。
【解决方案3】:

即使我正确引用了所有 .dll,我也收到了这个确切的错误消息。 我的解决方案是重新生成功能文件。 (右键项目并选择“重新生成功能文件”)

留下这个答案以防将来对某人有所帮助。

【讨论】:

    【解决方案4】:

    我今天遇到了同样的问题,不是 specflow,而是 2013 年构建控制器和代理以及 codedui 测试。 解决方案是安装 VS2013 Update 5 https://www.visualstudio.com/downloads/download-visual-studio-vs

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,发现以下解决方案效果很好: http://blog.majcica.com/2015/05/07/getting-started-with-specflow-and-codedui/

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2021-10-09
      • 2020-03-17
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多