F#プロジェクトのテストを書くのにFsUnit 2.1(NUnit 3.2)を使用しています。ここでは、単純なモジュールです:MissingMethodExceptionは、関数パラメータをとる関数をテストするとき
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 : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.
場合私は、テストが合格する別のVSプロジェクトではなく)テストと同じコードファイルにテスト対象のモジュールを配置します。私の疑問は、これはNUnitとF#/ C#interopの問題が原因だということです。もしそうなら、どのように解決できますか?
両方のプロジェクトのF#(コア)バージョンを確認できますか? – CaringDev
どちらのテストも私を通過しています。 FsUnit:2.1、NUnit:3.2、F#Core:3.1.2.5特定のバージョン:False。私はVS 2015を使用しています。 –
@CaringDev 'Library1'はFSharp.Core 4.4.0.0を使用しています、' Tests'は特定バージョンで3.1.2.5を使用していますが、NCrunchとReSharperはありません。 :false。 – Blisco