19

さて、私が抱えている問題の完全な説明は次のとおりです。

NUnit ExtensionMethodsを使用しようとしていますが、TestDriven.Net を使用して拡張メソッドの 1 つを含むテストを実行するたびに、またはテスト ランナー GUI (Icarus または NUnit) を使用してアセンブリをロードしようとすると、FileNotFoundException が発生します。

頭を壁にぶつけて、さらに掘り下げていくと、何が悪いのか分かっていると思います。キューリフレクターとはい、NUnit.Framework>ExtensionMethods.dll に参照があることがわかります

nunit.framework, Version=2.4.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77

そして、私が含めているnunitの現在のバージョンは

nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77

これまでアセンブリのリダイレクトを使用したことはありませんが、次の行で App.Config を追加するのは簡単なことのようです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding  xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity
                    name="nunit.framework.dll"
                    publicKeyToken="96d09a1eb7f44a77" />
                <bindingRedirect oldVersion="2.4.6.0" newVersion="2.4.8.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

2.4.6 バージョン (このマシンには存在しません) への呼び出しは、自動的に 2.4.8 バージョンにリダイレクトされるはずです。

ただし、これは機能しません。これは、テスト ランナーが app.config ファイルを自動的に読み取らないためであると思われます (ただし、まだ確認していません)。

だから私の質問は次のとおりです:

  1. 問題の診断は正しいですか?

  2. アセンブリのリダイレクトは適切な解決策ですか?また、私はそれを正しく行っていますか?

  3. これをテストランナーで動作させるにはどうすればよいですか?

4

1 に答える 1

18

これは、構成設定を正しい .config ファイルに配置した場合に機能するはずです。どちらがテストの実行に使用する環境によって異なりますが、NUnit と TestDriven.NET の両方がtestassembly .dll.config の使用をサポートする必要があります。
これが適切な解決策であるとして、私はそう言うでしょう。他の唯一の可能性は発行者ポリシー ファイルを使用することですが、NUnit をコンパイルするために使用される秘密鍵が必要になります。

于 2009-01-21T16:01:47.023 に答える