Я создаю универсальное приложение для iPhone/iPad, и в некоторых случаях пользовательский интерфейс существенно отличается (например, на iPhone мы используем парадигму Master/Detail с TableViews, тогда как на iPad мы используем CollectionView с ячейками, которые содержат детали).
Поскольку интерфейсы настолько различны, они меняют порядок построения модулей для контроллеров представлений. В представлении коллекции нам нужно будет протестировать, чтобы убедиться, что ячейки построены правильно и содержат всю подробную информацию, тогда как на iPhone нам понадобятся два набора тестов: один для главного списка и один для подробного экрана.
Итак, мой вопрос заключается в том, что в универсальном приложении, создаваемом с использованием Xcode 5 с фреймворком XCTest, можно ли настраивать отдельные случаи/классы unit test, которые будут выполняться на определенных физических устройствах?
Я столкнулся с аналогичным вопросом здесь - iOS Unit testing универсальное приложение - но у искателя были разные намерения и использовались более старые технологии.
Я также видел рекомендации по проверке отдельных функций тестирования для UserInterfaceIdiom, но это кажется действительно грубым. В идеале, будет аннотация, которая будет определять конкретные тесты, выполняемые на определенных устройствах, или иметь возможность назначать весь тестовый класс для определенного устройства.
Заранее благодарим за ваши предложения.
- EDIT -
@TommieC привел меня к тому, что кажется подходящим путем, если руководство для smidge. Я создал две новые схемы тестирования, один для устройств с размером телефона и один для устройств размером с планшет. Внутри этих схем я редактировал тестовую часть и добавлял в основные тесты вместе с тестами, специфичными для устройства.
Затем у меня есть jenkins, выполняющие два шага сборки, предназначенные для соответствующих устройств для проверки конкретной схемы. Недостатком этого подхода является два этапа сборки. Тем не менее, я планирую разделить работу jenkins и запустить ее на 2 подчиненных устройствах, при этом соответствующие устройства подключаются к каждому, чтобы распараллелить тестирование.
AFAIK это также будет дружественным Xcode Build Services, так как он работает на основе схем в проекте. Это очень плохо, для этого нет ничего более элегантного, встроенного в XCTest, учитывая, что это не очень хорошо масштабируется в случае появления нового типа устройства (часы/телевизор/фен/и т.д.).