Как выполнить модульное тестирование подклассов UIGestureRecognizer? - PullRequest
5 голосов
/ 02 августа 2010

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

Ответы [ 3 ]

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

Я использую Cedar и планирую протестировать пользовательские UIGestureRecognizer, высмеивая объекты NSTouch, связывая их в виде набора и делая соответствующие вызовы различным точкам UITouchGestureSubclass. Этот модуль тестирует пользовательский класс. Поведение родительского класса, который я тестирую, вызывая метод действия, зарегистрированный в подклассе UIGR.

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

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

Как @tooluser предложил вамможет быть в состоянии предоставить "хорошие" насмешки для объектов UITouch.Поскольку нет общедоступного конструктора для UITouch, поставка «настоящих» экземпляров UITouch является сложной задачей и будет опираться на частные вызовы API.К сожалению, поскольку эти сенсорные имитации должны проходить через код инфраструктуры, который вы не можете видеть или контролировать, вы должны надеяться, что ваши макеты действительно соответствуют всем ожидаемым поведениям UITouches, которые они удваивают (включая любое частное поведение, которое мы не видим).Это заставляет меня нервничать.

Кроме того, вы можете следовать решению @ Sulthan и тестировать свои распознаватели жестов с помощью тестов интеграции вождения пользовательского интерфейса.Это подход, который я использовал до сих пор.Используйте UIAutomation или стороннюю тестовую среду, такую ​​как Frank или KIF , чтобы генерировать взаимодействия с представлениями и утверждать, что распознаватели жестов запускаются, как и ожидалось.Это может, по крайней мере, позволить вам тестировать распознаватель изолированно (даже если не в истинном модульном тесте).

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

0 голосов
/ 01 ноября 2011

это не совсем модульное тестирование, но лучший способ протестировать ваш пользовательский интерфейс - использовать Automation.По сути, вы пишете javascript, а затем запускаете его в разделе «Инструменты» в разделе «Автоматизация».

Он не очень хорошо задокументирован, и почти нет учебных пособий.Приготовьтесь разочароваться.

...