2016-03-26 28 views
4

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?

+1

Her iki proje için de F # (Çekirdek) sürümlerini kontrol edebilir misiniz? – CaringDev

+0

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. –

+0

@ CaringDev 'Library1' FSharp.Core 4.4.0.0 kullanıyor,' Tests 'Özel Sürüm 3.1.2.5 kullanıyor Hata: – Blisco

cevap

5

Bu FsUnit ve diğer projeler ile bilinen bir sorun (here ve here bakınız). Geçici bir çözüm olarak

, kendi app.config dosyasına bu ekleyebilirsiniz:

<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-4.3.0.0" newVersion="4.3.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Not: o zaman olduğu gibi ve siz kullanıyor olursa olsun FSharp.Core senin FsUnit derlemenin sürümü için güncelleştirme 4.3.0.0 gerekir güncellenmiş.

İlgili konular