5

テストランナーとして NUnit でunquoteを使用しようとしています。テスト ケースはGetting Startedから取得され、NUnit の外部で実行すると期待どおりに動作します。

namespace FsTest.Tests

open NUnit.Framework
open Swensen.Unquote

[<TestFixture>]
module Example =

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

NUnit の下では、次の例外が発生します。

FsTest.Tests.Example.foo: System.MissingMethodException : メソッドが見つかりません: 'System.Tuple 2<Microsoft.FSharp.Collections.FSharpList1,Microsoft.FSharp.Quotations.FSharpExpr> Internal.reduceFullyAndGetLast(Microsoft.FSharp.Quotations.FSharpExpr)'.

上記のコードに問題があるかどうか、およびそれを機能させる方法を知りたいです。raiseそれが助けになるなら、同じように私にとって引用符を外すことは失敗します。

4

1 に答える 1

8

問題の説明に基づいて、FSharp.CoreUnquoteの最新バージョンは.NET 4.0用に構築されており、テストプロジェクトは.NETを対象としているため、バージョン4.0.0.0からバージョン4.3.0.0へのバインディングリダイレクトを使用してNUnitプロジェクトを構成する必要があると思われます。 4.5。

詳細については、この引用解除の問題を参照してください。あなたの設定は次のようになると思います

<?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>

NUnitプロジェクトでこれをどこに配置する必要があるか正確にはわかりませんが、プロジェクトエディターで指定された構成ファイルにある可能性がありますか?

残念ながら、私はVS2012をインストールしていないので、この問題を実際に診断する能力がやや不自由になっています。

于 2012-12-12T19:49:06.630 に答える