alan bir işlevi sınarken MissingMethodException bir F # projesi için sınamalar yazmak için FsUnit 2.1 (NUnit 3.2 ile) kullanıyorum.Bir işlev parametresi
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
ikinci testi (NCrunch ve ReSharper olarak) başarısız mesajla:
System.MissingMethodException : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.
Eğer
namespace Library1
module LibraryFunctions =
let Execute f1 = f1()
let Id x = x
Ve işte benim testler şunlardır: İşte size basit bir modüldür Test edilen modülü, test ile aynı kod dosyasında (ayrı bir VS projesinden ziyade) testlere geçirdim. Şüphem, bunun NUnit ve F #/C# birlikte çalışmasından kaynaklanıyor olması. Eğer öyleyse, nasıl çözülebilir?
Her iki proje için de F # (Çekirdek) sürümlerini kontrol edebilir misiniz? – CaringDev
Her iki test de bana geçiyor. F # core ile bir projede "Library1" var: 4.3.1.0 Sonra FsUnit: 2.1, NUnit: 3.2 ve F # Core: 3.1.2.5 ile özel bir projede 'Testler' var. Spesifik Sürüm: Yanlış VS 2015 kullanıyorum. Ben NCrunch ve ReSharper yok. Test NUnit VS Adaptör yüklü Test Gezgini kullanılarak VS içinde çalıştırılıyor. –
@ CaringDev 'Library1' FSharp.Core 4.4.0.0 kullanıyor,' Tests 'Özel Sürüm 3.1.2.5 kullanıyor Hata: – Blisco