2012-12-12 5 views
5

Ich versuche, unquote mit NUnit als Test Runner zu verwenden. Der Testfall wird aus Getting Started genommen und wie erwartet funktioniert, wenn sie außerhalb von NUnit laufen:MissingMethodException bei Verwendung von Unquote behauptet

namespace FsTest.Tests 

open NUnit.Framework 
open Swensen.Unquote 

[<TestFixture>] 
module Example = 

    [<Test>] 
    let foo() = 
     test <@ (1+2)/3 = 1 @> 

Unter NUnit bekomme ich diese Ausnahme:

FsTest.Tests.Example.foo: System.MissingMethodException: Methode nicht gefunden: 'System.Tuple 2<Microsoft.FSharp.Collections.FSharpList 1, Microsoft.FSharp.Quotations.FSharpExpr> Internal.reduceFullyAndGetLast (Microsoft.FSharp.Quotations.FSharpExpr)'.

Ich würde gerne wissen, ob irgendetwas mit dem Code oben falsch ist und wie ich es zum Laufen bringen könnte. Unquote's raise scheitern für mich auf die gleiche Weise, wenn das hilft.

+0

Können Sie bitte klarstellen, was Sie mit "außerhalb von NUnit" und "Unter NUnit" meinen? Dieses Problem ähnelt http://stackoverflow.com/q/7828852/236255 mit Ausnahme des GUI-Testlaufers xUnit.net, bei dem der OP gelernt hat, dass er auf die falsche Version von FSharp.Core.dll –

+0

* "run outside" verwiesen hat of NUnit "* bedeutet die Verwendung von F # Interactive oder einer Befehlszeilenanwendung von derselben Lösung; * "Unter NUnit" * bedeutet, dass Sie einen NUnit 2.6.2-GUI-Runner auf Lager verwenden, der als Zip-Datei heruntergeladen wurde. FScharp.Core.dll wird von der Testassembly referenziert: ''. Das Ganze ist VS 2012 Targeting .NET 4.5. –

Antwort

8

Basierend auf der Beschreibung des Problems, ich vermute, Sie benötigen, um Ihre NUnit-Projekt mit einem FSharp.Core konfigurieren von Version 4.0.0.0 auf Version 4.3.0.0 umleiten Bindung, da die neueste Version von Unquote für .NET 4.0 erstellt wird und Ihre Testprojekt zielt auf .NET 4.5.

Siehe this Unquote Ausgabe für Details. Ich glaube, dass die Konfiguration so etwas wie

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <legacyUnhandledExceptionPolicy enabled="true" /> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity 
      name="FSharp.Core" 
      publicKeyToken="b03f5f7f11d50a3a" 
      culture="neutral"/> 
     <bindingRedirect 
      oldVersion="2.0.0.0" 
      newVersion="4.3.0.0"/> 
     <bindingRedirect 
      oldVersion="4.0.0.0" 
      newVersion="4.3.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

sicher, dass mir nicht genau so aussehen würde, wenn Sie dies für ein NUnit Projekt müssen setzen, aber vielleicht in der Konfigurationsdatei durch die Project Editor angegeben?

Leider habe ich VS2012 nicht installiert und so bin ich etwas verkrüppelt in meiner Fähigkeit, dieses Problem wirklich für Sie zu diagnostizieren.

+1

Großartig, das hat geholfen, danke. Für diejenigen, die daran interessiert sind, verwendet NUnit ' .dll.config', um Test-DLLs zu konfigurieren, daher legen Sie diese Einstellungen dort fest. –

Verwandte Themen