【问题标题】:How to reuse Specflow steps from a CodedUITest project in different solution如何在不同的解决方案中重用 CodedUITest 项目中的 Specflow 步骤
【发布时间】:2018-07-31 23:54:09
【问题描述】:

我们在 CodedUITest 项目之上有 Specflow 层。我们在一个 CodedUITest 项目 (CodedUITestProject1) 中有一些通用步骤,我们希望在不同解决方案的另一个 CodedUITest 项目 (CodedUITestProejct2) 中使用这些步骤。

我们已经创建了 CodedUITestProject1 的 dll 并在 CodedUITestProejct2 中添加了它的引用。还更新了 CodedUITestProject2 的 App.config 文件以使用来自外部程序集的绑定,但无法正常工作。对此有任何想法。

<specFlow>
    <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
  <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --><unitTestProvider name="MsTest" />
  <plugins>
  <add name="CodedUi" type="Generator" path="." />
  </plugins>
<stepAssemblies>
    <stepAssembly assembly="CodedUITestProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </stepAssemblies>

  </specFlow>

【问题讨论】:

  • 什么不起作用?请在您的问题中添加错误消息。
  • 我没有从 CodedUITestProject2 功能文件中的 CodedUITestProject1 获得步骤。我在 CodedUITestProejct2 中创建了一个 Specflow 步骤文件,并在其中添加了 CodedUITestProejct1 引用。然后在 CodedUITestProject2 中添加了一个功能文件,并尝试使用 CodedUITestProejct1 中的步骤创建一个场景,但我没有从 CodedUITestProejct2 功能文件中的 CodedUITestProject1 中获取步骤
  • 您是指智能感知还是执行场景时?
  • 是的智能感知

标签: coded-ui-tests specflow


【解决方案1】:

Visual Studio 集成在涉及附加步骤程序集时存在一些错误。 所以语法高亮、IntelliSense 和“转到定义”有时不起作用。
尝试从 %temp% 中删除 specflow-stepmap* 文件。

运行时没有问题。

【讨论】:

  • 现在我可以将 CodedUITestProject1 中的步骤添加到 CodedUITestProject2 功能文件中。但是,当我在 CodedUITestProject1 添加的步骤上按 F12 时,它不会对其进行绑定。此外,当我运行测试时,我收到以下错误
  • System.IO.FileNotFoundException: System.IO.FileNotFoundException: 无法加载文件或程序集“CodedUITestProject1”或其依赖项之一。系统找不到指定的文件。警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]
【解决方案2】:

有时,如果在使用项目中未使用任何代码,VS 会自行决定不复制引用的 DLL。 Double check your bin folder for CodedUITestProject1.dll 如果 VS 决定你不需要它,它应该会丢失。

如果是这种情况,那么您可能需要在您的挂钩(或代码中的任何位置)中从 CodedUITestProject1.dll 创建一个类型的虚拟实例,以便 VS 可以看到您正在使用来自 CodedUITestProject1.dll 的东西。构建项目后,您可以删除您输入的虚拟代码。

另一个选项可能只是引用-> CodedUITestProject1 -> 属性-> 将copy local 设置为True。 (未确认其解决了问题)。

注意:当使用外部 DLL 导航中的 BDD 步骤时(步骤上的 F12)不起作用。

【讨论】:

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