我正在尝试让 Unquote 库与 .NET 4 中的 xUnit 一起工作,但我根本没有任何运气来运行测试。所以,我把它分解成我能做到的最简单的复制步骤。有人知道我可能会错过什么吗?

  • 创建一个新的 F# 库项目。
  • 使用 NuGet 添加 xUnit 和 Unquote 引用。
  • 粘贴以下代码...

  • 我直接从 Unquote 主页获得了实际测试,但内容无关紧要,因为它没有运行。
    module Tests
    
    open Xunit
    open Swensen.Unquote
    
    [<Fact>]
    let ``demo Unquote xUnit support`` () =
        test <@ ([3; 2; 1; 0] |> List.map ((+) 1)) = [1 + 3..1 + 0] @>
    

    然后我编译程序集并将其加载到 xUnit.net GUI 测试运行器(64 位,CLR 4)中,并在运行测试时收到以下错误:
    Tests.demo Unquote xUnit support : System.MissingMethodException : Method not found:
    'Microsoft.FSharp.Collections.FSharpList`1<Microsoft.FSharp.Quotations.FSharpExpr> Swensen.Unquote.Extensions.Expr.ReduceFully(Microsoft.FSharp.Quotations.FSharpExpr)'.
    Stack Trace:
       at Tests.demo Unquote xUnit support()
    

    最佳答案

    没关系,我想通了。我正在使用 VS 11 预览版,即使我在我的项目中针对 .NET 4.0,该项目也引用了错误版本的 FSharp.Core.dll:

    C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\v4.0\FSharp.Core.dll

    我把它改成引用这个,一切都开始正常工作了:

    C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\FSharp.Core.dll

    关于unit-testing - 取消引用 : What am I missing?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7828852/

    10-13 08:33