5

ユニットテストで使用するようにMolesを設定しようとしています。私たちはxunitを使用しているので、私はusingmoles()に付属するXunit拡張機能ですMicrosoft.Moles.Framework.Xunit。ただし、Xunit 1.7を実行しているため、Molesはバージョン1.6.1.1521(を使用FileLoadException)を実行していないと文句を言っています。

Molesマニュアル(28ページ)には次のように書かれています。

xUnit.netバージョン:

1.5.0.1479(他のxUnit.netバージョンの場合、ソースから属性を再コンパイルします)

これは私が立ち往生しているところです-このxunit拡張機能のソースコードはどこかで入手できますか?または、Molesが必要とする特定のバージョンのxunitを使用する必要がありますか?

4

3 に答える 3

2

でアセンブリバインディングリダイレクトを定義できませんmoles.runner.exe.configか?

<configuration>
    <runtime>
        <assemblyBinding  xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity
                    name="xunit.dll"
                    publicKeyToken="8d05b1bb7a6fdb6c" />
                <bindingRedirect oldVersion="1.5.0.1479" newVersion="1.6.1.1521" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>
于 2011-05-16T12:43:58.853 に答える
2

再コンパイルする必要がある場合は、それを行うことができます。Molesのソースコードを探しましたが、どこにも見つかりませんでした。次に、 Microsoft.Moles.Xunit.dllを分解しようとしましたが、属性の長さがほんの数行であることに気付きました。

MoledAttributeソースコード:

using System;
using System.Reflection;
using XUnit;

namespace Microsoft.Moles.Framework.Xunit
{
    public sealed class MoledAttribute : BeforeAfterTestAttribute
    {
        // Fields
        private IDisposable _molesContext;

        public override void Before(MethodInfo methodUnderTest)
        {
            this._molesContext = MolesContext.Create();
        }

        public override void After(MethodInfo methodUnderTest)
        {
            IDisposable disposable = this._molesContext;
            if (disposable != null)
            {
                disposable.Dispose();
            }
            this._molesContext = null;
        }
    }
}

新しいクラスライブラリを作成し、必要なバージョンのxunit.dllへの参照を追加する必要があります。唯一の依存関係であるXUnit.BeforeAfterTestAttributeの変更に気付いていないため、1.8.0.1545でも機能するはずです。

于 2011-05-18T11:04:51.917 に答える
2

プロクソンの答えは私の仕事を成し遂げるのに非常に役立ちましたが、私がさらに調査したときに見つけたより良い答えを提示させてください(うまくいけば、この問題に遭遇する他の人を助けるために)。ソースコードはにありC:\Program Files\Microsoft Moles\Documentation\moles.samples.zipます。もちろん、proxonが逆コンパイルしたコードとほとんど同じです。

NUnitラッパーとMbUnitラッパーもそこにあります。

于 2011-05-23T04:28:13.897 に答える