【问题标题】:How to run Nunit test in F# from console如何从控制台在 F# 中运行 Nunit 测试
【发布时间】:2017-05-17 01:13:21
【问题描述】:

我有一个用F# 4.1 编写的项目,它使用Nunit 3.6.1。我使用VisualStudio 2017 构建项目并使用NUnit Console Runner 3.6.1 运行测试。但是当我尝试运行我的测试时,会收到一个错误:

C:\projects\AzureLogsDownloader\packages\NUnit.ConsoleRunner.3.6.1\tools>nunit3-console.exe "C:\projects\AzureLogsDownloader\AzureLogs.Core.Tests\bin\Debug\AzureLogs.Core.Tests .dll”

无法加载文件或程序集“FSharp.Core, Version=4.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。(HRSULT: 0x80131040)

我尝试将FSharp.Core 复制到测试跑步者的文件夹,但没有帮助。

如何解决这个问题并运行我的测试?

【问题讨论】:

  • 检查 DLL 版本:它们都应该匹配,或者您应该将绑定重定向添加到您的配置中。
  • 使用的是哪个版本的 .NET Framework?
  • @BentTranberg 4.5.2
  • @FyodorSoikin 我应该在哪里检查这些 DLL?我将 AzureLogs.Core.Tests.dll 更改为 .exe,构建后我可以运行这两个应用程序 -> 在构建文件夹中,所有 DLL 都兼容
  • 不知道和这个问题有没有关系:stackoverflow.com/questions/42665926/…

标签: visual-studio f# nunit nunit-console


【解决方案1】:

只需几个必要的步骤:

  1. 在您的测试项目中创建app.config 文件
  2. 添加绑定重定向,如本示例所示(我假设您使用的是 NUnit 3.6.1):
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.4.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NUnit.Framework" publicKeyToken="2638cd05610744eb" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="3.6.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
</configuration>

【讨论】:

  • 谢谢,但它没有帮助。结果是一样的
  • 尝试将“4.4.1.0”更改为“4.4.0.0”。我认为这可能有效的原因是您使用的是 .NET Framework 4.5.2。
猜你喜欢
  • 1970-01-01
  • 2010-12-25
  • 2018-01-10
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多