Как исправить Не удалось загрузить файл или сборку 'nunit.engine, Version = 3.7.0.0

У меня есть веб-приложение с отдельным тестовым проектом с использованием NUnit для запуска unittests. Когда мой тестовый проект пытается обнаружить тесты, я сталкиваюсь с следующим исключением:

An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Could not load file or assembly 'nunit.engine, Version=3.7.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb' or one of its dependencies. The system cannot find the file specified.

Это, конечно, очень распространенная ошибка, но я не могу найти ссылку на эту конкретную сборку нигде или что другая зависимость действительно вызывает проблему. Другое дело, что у меня в настоящее время 3.9.0 установлен NUnit вместо упомянутого 3.7.0. Я уже пробовал очистить и перестроить решение и восстановить все пакеты Nuget, и очистка каталога obj тоже не помогла.

Ответ 1

Это происходит довольно часто с последними версиями Visual Studio. Мы не знаем, почему, но причиной является неполная копия тестового адаптера в кеше Visual Studio. Исправление состоит в том, чтобы удалить кешированную копию и перезапустить Visual Studio.

Папка, которую вы хотите удалить, C:\Users\username\AppData\Local\Temp\VisualStudioTestExplorerExtensions\NUnit3TestAdapter.3.x.x в зависимости от вашего имени пользователя и версии.

См. https://github.com/nunit/nunit3-vs-adapter/issues/261 и http://hermit.no/how-to-resolve-cases-of-visual-studio-no-tests-appearing/

Ответ 2

Кажется, что в файле проекта вы упомянули ссылку 3.7.0 как GAC, и эта DLL недоступна в GAC, которая, как мы надеемся, приведет к сбою.

Ответ 3

В моем случае это было

Возникла исключительная ситуация при вызове executor 'executor://nunit3testexecutor/': не удалось загрузить файл или сборку 'nunit.engine, Version = 3.9.0.0

И проблема в том, что в моем тестовом проекте у меня есть импорт NUnit3TestAdapter.3.13.0

  <Import Project="..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props" Condition="Exists('..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props')" />

И в другом проекте у меня есть ссылка на NUnit.Engine.3.10.0. но в пакете NUnit3TestAdapter.3.13.0 есть пакет Nunit.Engine.3.9.0.

\packages\NUnit3TestAdapter.3.13.0\build\net35

Итак, решением было понизить версию Nunit.Engine в другом проекте до версии 3.9.