Использование родинок с XUnit - неправильная версия DLL - PullRequest
5 голосов
/ 12 мая 2011

Я пытаюсь настроить Moles для использования в нашем модульном тестировании. Мы используем xunit, поэтому я using расширение Xunit, которое поставляется с родинками (Microsoft.Moles.Framework.Xunit). Однако, поскольку мы работаем с Xunit 1.7, Moles жалуется, что я не работаю с версией 1.6.1.1521 (с FileLoadException).

В руководстве Кроты (стр. 28) сказано:

xUnit.net Версия:

1.5.0.1479 (для других версий xUnit.net перекомпилируйте атрибут из источников)

Вот где я застрял - есть ли где-нибудь исходный код для этого расширения xunit? Или мне придется использовать конкретную версию xunit, которая требуется Moles?

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Если вам нужно перекомпилировать, вы можете сделать это. Я искал исходный код 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 любой версии, которую вы хотите. Он должен работать даже с 1.8.0.1545, так как я не заметил никаких изменений в XUnit.BeforeAfterTestAttribute , который является единственной зависимостью.

2 голосов
/ 23 мая 2011

Несмотря на то, что ответ Proxon был очень полезен для выполнения моей задачи, позвольте мне представить лучший ответ, который я нашел в ходе дальнейших исследований (надеюсь, помочь другим, столкнувшимся с этой проблемой). Исходный код находится в C:\Program Files\Microsoft Moles\Documentation\moles.samples.zip. Конечно, во многом идентично коду, который проксон декомпилировал.

Там же вы можете найти оболочки NUnit и MbUnit.

2 голосов
/ 16 мая 2011

Не можете ли вы определить перенаправление привязки сборки в 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>
...