У меня есть приложение MVC 3.0.Мой тестовый фреймворк nUnit 2.4.8.0.Я запустил этот код на 32-битной машине, а недавно начал использовать 64-битную машину.Я недавно обновил проект до .NET 4.0.
Мое приложение работает нормально - я могу соответствующим образом гидрировать свои объекты из базы данных.Проблема заключается в том, что я запускаю свои интеграционные тесты.
Тесты не пройдены и дают исключение, которого я никогда раньше не видел:
NHibernate.ADOException : cannot open connection
----> System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Я искал в Интернете это исключение - этоконечно, проблема с nUnit, несмотря на исключение NHibernate (помните, NHibernate позволяет мне увлажнять и сохранять объекты при запуске приложения).
Я обновил сборку nUnit до самой последней версии, версии 2.5.10и обновил ссылку в проекте на сборку в папке «net-2.0» zip-файла nUnit.Я снова провел тесты и получил то же исключение.
Похоже, что между сборками, кодом и сервером разработки ASP.NET существует какой-то тип 32-разрядного и 64-разрядного конфликта.
У меня нет опыта работы с32-битные и 64-битные проблемы, поэтому я не знаю, есть ли другие вопросы о переполнении стека, которые актуальны (те, которые я видел, похоже, не имеют)У меня есть идеи, но нет ответов:
- Нужна ли другая сборка nUnit?
- Нужно ли менять настройку Solution Platform в VS2010?(В настоящее время он работает на «Любой процессор»)
- Нужно ли менять свойства сборки моего проекта интеграционных тестов?
- Нужно ли менять настройки конфигурации моего решения?
К сожалению, у меня нет 32-битной машины для тестирования кода в данный момент.Находятся ли какие-либо из приведенных выше вопросов на правильном пути решения этой проблемы?Можете ли вы предложить какие-либо рекомендации?
Спасибо.
ОБНОВЛЕНИЕ: Я действительно надеюсь, что смогу запустить тесты из Visual Studio с помощью TestDriven.NET.Я не хочу начинать использовать пользовательский интерфейс nunit для запуска моих тестов.
ОБНОВЛЕНИЕ 2: Извините, возможно, я не совсем уверен.Я еще не использую TestDriven.NET, я сказал, что надеюсь его использовать, но я еще не установил его на новый компьютер x64.В данный момент я пытаюсь запустить тесты, щелкнув визуальный значок в Visual Studio IDE, как показано на рисунке ниже:
Выполнение этого действиятесты не пройдены, и всплывающее диалоговое окно отображает следующее:
Это исключение, которое я цитировал выше.Нет ссылки на сборки, которые еще не загружены.
Сначала я не верил, что используемая мной версия NHibernate (2.0.1.4000) будет иметь значение;Я говорю это потому, что провайдеры могут возвращать нужные объекты из базы данных при запуске приложения.Однако, когда я отлаживаю тест, я вижу, что в моем провайдере выдается исключение.При копании немного, кажется, источником этого является моя сборка SQLite.Но опять же, это та же сборка, которая работает при запуске проекта - почему он не будет работать при запуске интеграционных тестов?