SpecFlow。无法加载文件或程序集

时间:2015-07-10 17:26:55

标签: bind .net-assembly specflow

我在SpecFlow中使用了2个项目。

第一个项目名称为:FrontEnd.Tests 有SpecFlow的功能和步骤(定义)

第二个项目:FrontEnd.Tests.Extended 所以,我在App.config中添加了第二个项目

  <specFlow>
    <unitTestProvider name="MsTest" />
    <stepAssemblies>
      <stepAssembly assembly="FrontEnd.Tests" />
    </stepAssemblies>
  </specFlow>

使用第一个项目的步骤定义。 但我得到错误:

  

System.IO.FileNotFoundException:无法加载文件或程序集&#39; FrontEnd.Tests&#39;或其中一个依赖项。

项目位于同一目录中。

4 个答案:

答案 0 :(得分:1)

尝试此操作,添加一个名为specflow.json的文件,并在其中引用您的程序集:

{
  "stepAssemblies": [ 
    { "stepAssembly": "FrontEnd.Tests" } 
  ]
}

答案 1 :(得分:0)

我认为您需要将.dll放在文件名的末尾:

<specFlow>
  <unitTestProvider name="MsTest" />
  <stepAssemblies>
    <stepAssembly assembly="FrontEnd.Tests.dll" />
  </stepAssemblies>
</specFlow>

答案 2 :(得分:0)

对于.net核心中的用户,您需要排除“ .dll”扩展名,并且文件为specflow.json并按如下所示设置属性:

enter image description here

答案 3 :(得分:0)

对于使用.netCore和VSCode和/或dotnet-cli的用户,您需要做两件事:

首先:在specflow.json文件中指定附加程序集(只是文件名,不带.dll扩展名)

{
   "stepAssemblies": [
      { "assembly": "AssemblyWithStepDefs" }
    ]
}

第二:修改项目文件(.csproj),以便始终将specflow.json文件复制到输出目录

  <ItemGroup>
    <None Update="specflow.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>