我正在使用FsUnit 2.1(与NUnit 3.2一起)编写用于F#项目的测试。下面是一个简单的模块:
namespace Library1
module LibraryFunctions =
let Execute f1 = f1()
let Id x = x
以下是我的测试:
namespace Tests
open FsUnit
open NUnit.Framework
open Library1
[<TestFixture>]
type Tests() =
[<Test>]
// Passes
member x.``LibraryFunctions.Id should return the value``() =
LibraryFunctions.Id 42 |> should equal 42
[<Test>]
// Fails
member x.``LibraryFunctions.Execute should return the result of the function``() =
let f() = 42
LibraryFunctions.Execute f |> should equal 42
第二个测试在 NCrunch 和 ReSharper 中失败,错误信息如下:
System.MissingMethodException:未找到方法:'!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'
如果我将被测试的模块放在与测试相同的代码文件中(而不是单独的 VS 项目中),则测试通过。我怀疑这是由于 NUnit 和 F# / C# 交互的某些问题引起的。如果是这样,该如何解决?
Assert.AreEqual
,但与我的原始问题一样出现了相同的问题。 - Blisco