Проблема с использованием System.Xml в модульном тестировании в MonoDevelop (MonoTouch) - PullRequest
2 голосов
/ 06 апреля 2010

Когда у меня есть модульный тест, требующий пространства имен System.Xml или System.Xml.Linq, я получаю следующую ошибку при запуске теста:

System.IO.FileNotFoundException: может не загружать файл или сборку 'System.Xml.Linq, версия = 2.0.5.0, Culture = нейтрально, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей.

Вещи, которые я подтвердил:

  • У меня есть правильное использование в тесте.
  • Проект строится без проблем.
  • Использование этих пространств имен работает нормально, когда я запускаю приложение в эмуляторе.
  • Я написал очень простой модульный тест, чтобы доказать, что модульное тестирование работает вообще (и оно работает).

Я любопытный парень, поэтому не могу дождаться, чтобы это заработало, и я смогу усовершенствовать свое приложение.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Вам необходимо добавить те же самые dll (сборки), которые monotouch использует в ссылках вашего проекта модульного тестирования.

Они находятся в /Developer/MonoTouch/usr/lib/mono//...

Например, мне нужно было использовать System.Xml, поэтому я отредактировал ссылки моего тестового проекта и добавил следующую сборку:

/ Разработчик / MonoTouch / пользователь / Библиотека / моно / 2,1 / system.Xml.dll

Также есть одна для system.xml.linq, и это нужные вам версии (2.0.5.0)

0 голосов
/ 06 апреля 2010

Вероятно, Моно не находит нужную библиотеку в местах, где она выглядит. По умолчанию NUnit пытается скопировать вашу тестовую библиотеку в другое место, и поэтому он не найдет библиотеки, которые не видны глобально (те системные библиотеки, которые установлены в GAC). Не уверен, что вы можете установить в Monodevelop параметр для NUnit, чтобы не копировать тестируемую библиотеку, чтобы избежать проблемы. Одной из возможностей является запуск автономного запуска консоли NUnit, в котором вы устанавливаете параметры или предоставляете NUnit больше информации, чтобы он копировал больше вещей, но это сложно из-за необходимости заставить NUnit использовать правильный профиль (Monotouch, основанный на Silverlight)

...