Как мне заставить NUnit уважать мой bindingRedirect в моей testassembly.dll.config? - PullRequest
9 голосов
/ 11 марта 2010

Я использую 1.0 RTM Fluent Nhibernate с версией 3.0 NHibernate. Для этого мне нужно добавить следующее в мой файл .config:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="NHibernate" culture="neutral" publicKeyToken="aa95f207798dfdb4"/>
    <bindingRedirect oldVersion="2.1.0.4000" newVersion="3.0.0.1001"/>
  </dependentAssembly>
</assemblyBinding>

Это прекрасно работает при запуске интеграционных тестов с плагином TestDriven.net, но завершается ошибкой в ​​графическом интерфейсе NUnit или консоли запуска со следующей ошибкой:

System.IO.FileLoadException: не удалось загрузить файл или сборку 'NHibernate, версия = 2.1.0.4000, культура = нейтральная, PublicKeyToken = aa95f207798dfdb4' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Как заставить NUnit уважать мой bindingRedirect и успешно выполнить мои интеграционные тесты?

Ответы [ 2 ]

13 голосов
/ 27 марта 2014

У меня были подобные проблемы при запуске nunit на CI Server (бамбук, если быть точным). Насколько я понимаю, если nunit работает в своем собственном пространстве процессов (как будто вы просто запускаете его из командной строки), то он может правильно прочитать перенаправления привязки сборки .dll.config. Однако, если на вашем CI-сервере выполняется nunit в пространстве процесса CI-сервера, он пытается получить конфигурацию от родительского процесса. Чтобы обеспечить запуск nunit в своем собственном пространстве процессов, добавьте параметр командной строки /process:multiple. По крайней мере, это то, что мне помогло, чтобы nunit правильно нашел привязки перенаправления.

TL; DR: использовать параметр командной строки /process:multiple

3 голосов
/ 11 марта 2010

Ключ помещает его в правильный файл .config. См. Работает ли перенаправление привязки сборки для модульного тестирования с помощью бегуна? .

Другим подходом будет компиляция fluent-nhibernate для NHibernate 3.0. Если в нем есть ошибки компиляции, попросите команду разработчиков и / или разветвите исходный код и сделайте его компиляцией.

...