Модульное тестирование Monotouch - PullRequest
3 голосов
/ 03 февраля 2011

Кто-нибудь успешно смог запустить модульные тесты для своего проекта Monotouch?Я читал другие посты, где людям советуют вручную добавлять ссылки на соответствующие сборки.Это приводит к компиляции проекта, но тесты все равно не запускаются.

У меня есть решение с двумя проектами;проект навигации Monotouch и проект библиотеки NUnit.Я добавил ссылку на свой проект monotouch, а также на monotouch и другие необходимые сборки в тестовом проекте.Тесты, которые запускают код только вне монотонного сборки, будут работать нормально, а те, которые обращаются к монотонному коду, не выполняются с:

System.IO.IOException: Ошибка записи ---> System.Net.Sockets.SocketException: Сокет был отключен в System.Net.Sockets.Socket.Send (System.Byte [] buf, смещение Int32, размер Int32, флаги SocketFlags) [0x00000] в: 0 в System.Net.Sockets.NetworkStream.Write(Буфер System.Byte [], смещение Int32, размер Int32) [0x00000] в: 0 --- конец трассировки стека внутренних исключений --- в System.Net.Sockets.NetworkStream.Write (буфер System.Byte [],Смещение Int32, размер Int32) [0x00000] в: 0 в System.IO.BufferedStream.Flush () [0x00000] в: 0 в (обертывание-вызов-связывание с проверкой) System.IO.BufferedStream: Flush () в системе.IO.BufferedStream.Dispose (логическое удаление) [0x00000] в: 0 в System.IO.Stream.Close () [0x00000] в: 0 в Mono.Remoting.Channels.Unix.ClientConnection.ProcessMessages () [0x00000] в: 0

Я нашел сообщение saying: «..если вы не работаете на iPhone или в симуляторе iPhone, нет способа вызвать необходимые нативные API для создания экземпляров компонентов ..»

Так что мне действительно интересно,если на самом деле возможно провести юнит-тестирование в Monotouch в настоящее время, или если нет, то что все остальные ребята делают?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 01 марта 2011

На самом деле вам не нужно создавать второе решение или извлекать независимый от ОС код.Хотя есть несколько хитростей.Обычно:

  1. Ссылка на сборки MonoTouch, даже в ваших тестовых проектах .Net 3.5 / Mono
  2. Шаблон Supervisor Controller помогает с количеством кода, которое вы можете протестировать.

Написали несколько подробностей о том, что мы считаем наилучшей практикой на сегодняшний деньВы можете найти его здесь: http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing.

2 голосов
/ 20 января 2012

Кому-нибудь удалось успешно запустить модульные тесты для своего проекта Monotouch?

Да, теперь это возможно с последними выпусками MonoTouch 5.1.x (бета).

Я нашел сообщение, в котором говорилось: "..Если вы не работаете на iPhone или в симуляторе iPhone, нет способа вызвать необходимые нативные API для создания экземпляров компонентов .."

Это правда.Вот почему бегун , работающий на iOS (симулятор или устройства), был создан для обеспечения выполнения связанных с MonoTouch модульных тестов.

0 голосов
/ 20 февраля 2013

Да, это возможно.

Команда разработчиков Xamarin добавила документ на , используя встроенный шаблон модульных тестов , который работает с использованием модифицированной версии проекта NUnitLite .

0 голосов
/ 04 февраля 2011

Это был мой пост, который вы нашли. Пока это лучшее, что я смог сделать:

  1. Извлечение кода, независимого от ОС, в отдельные библиотеки.
  2. Создайте второе решение с собственными проектными файлами для компиляции этих библиотек как vanilla .NET 3.5.
  3. Модульное тестирование библиотек.

С другой стороны, это поощряет разделять ваши проблемы и (теоретически) облегчить перенос приложения, скажем, на MonoDroid. Но синхронизация двух решений - это боль, и легко отойти от написания тестов, когда они не видны.

...