Переадресовывает ли привязка сборки для модульного тестирования с помощью тестового бегуна?
Итак, вот полное описание проблемы, которую я имею:
Я пытаюсь использовать NUnit ExtensionMethods, но всякий раз, когда я запускаю тест, содержащий один из методов расширения, используя TestDriven.Net, или если я просто плоский попробуйте загрузить сборку с помощью графического интерфейса для тестирования (Icarus или NUnit). Я получаю исключение FileNotFoundException.
Устремляя голову к стене и копая дальше, я думаю, что знаю, что случилось. Cue рефлектор и yep, я вижу, что 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
Это должно работать, если вы установите параметры конфигурации в правильный файл .config. Какой из них зависит от среды, которую вы используете для запуска тестов, но оба NUnit и TestDriven.NET должны поддерживать использование testassembly.dll.config.
Что касается этого подходящего решения, я бы сказал "да". Единственная другая возможность - использовать файл политики издателя, но вам понадобится секретный ключ, используемый для компиляции NUnit.