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