2010-04-06 2 views
2

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

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

Вещей Я подтвердил:

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

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

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

ответ

2

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

Они находятся в/Developer/MonoTouch/USR/Lib/моно // ...

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

/Developer/MonoTouch/user/lib/mono/2.1/System.Xml.dll

Существует один для System.Xml.Linq, а также, и это собственные версии, которые необходимо (2.0.5.0)

+0

Я добавил ссылки так же, как и в проекте без тестирования. Вы говорите, что эти сборки разные и необходимы для проекта NUnit? Я попробую сегодня вечером ... –

+0

Это было! Спасибо Лейку. Похоже, MonoDevelop справится с этим должным образом для меня. Думаю, мне просто нужно лучше понять различия между Mono и MonoTouch. –

0

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

Смежные вопросы