Работает ли перенаправление привязки сборки для модульного тестирования с помощью тестового прогона? - PullRequest
17 голосов
/ 21 января 2009

Хорошо, вот полное описание проблемы, с которой я столкнулся:

Я пытаюсь использовать NUnit ExtensionMethods , но всякий раз, когда я запускаю тест, содержащий один из методов расширения, с помощью TestDriven.Net или если я просто пытаюсь загрузить сборку, используя графический интерфейс запуска тестировщика ( 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. Как мне заставить это работать с тестовый бегун?

1 Ответ

15 голосов
/ 21 января 2009

Это должно работать, если вы поместите параметры конфигурации в правильный файл .config. Какой из них зависит от среды, которую вы используете для запуска тестов, но и NUnit, и TestDriven.NET должны поддерживать использование testassembly .dll.config.
Что касается этого является подходящим решением, я бы сказал, да. Единственная другая возможность - использовать файл политики издателя, но вам понадобится закрытый ключ, используемый для компиляции NUnit.

...