Я пытаюсь собрать вместе минимальную тестовую систему BLE, где тест контролирует оба конца соединения BLE. Тестируемый код запускается на устройстве (симулятор iOS7 не поддерживает BLE) и использует CBCentralManager. Периферийный конец подключения будет на MacBook Pro.

IOS XCTestCase работает на том же Mac под Xcode.

Я хочу, чтобы мой тестовый код, работающий в XCTestCase, мог управлять периферийным концом соединения BLE.

Таким образом, типичный тест может быть следующим:

1) XCTestCase вызывает тестируемый код для подключения к периферийному устройству (Mac). 2) Когда соединение установлено, XCTestCase заставляет периферийное устройство (Mac) закрыть соединение. 3) XCTestCase проверяет результат, сгенерированный тестируемым кодом в iOS.

Итак, моя проблема в том, как iOS XCTestCase может взаимодействовать / управлять кодом, работающим в OS X (среда Mac) Все работает на одном Mac под контролем Xcode, за исключением кода, который ведет себя как периферийное устройство.

Надеюсь, я достаточно хорошо объяснил сценарий, и это подходящее место для такого рода вопросов.

Одна из моих идей заключалась в том, чтобы запустить веб-сервер на Mac, на который и код XCTestCase, и код периферийных устройств передавали бы сообщения друг другу. Было бы лучше, если бы более прямая связь.

Спасибо.

1
aklektik 9 Янв 2014 в 15:19
Вы уверены, что хотите это проверить? Это похоже на тестирование веб-соединения путем фактического выполнения веб-запроса (если я не неправильно понял вопрос). Разве вам не лучше вместо этого поиздеваться?
 – 
Abizern
9 Янв 2014 в 18:55
Объектом тестирования является функция Bluetooth с низким энергопотреблением, чтобы гарантировать корректное поведение приложения iOS на центральном конце соединения. Таким образом, XCTest необходимо создать / принудительно создать условия (например, отключение), а затем отслеживать поведение приложения. Например, чтобы убедиться, что приложение пытается повторно подключиться. Веб-элемент (локальный сервер, работающий на Mac) предлагается просто как метод для XCTest для управления периферийным концом соединения. Извините за пространный комментарий, надеюсь, он прояснится.
 – 
aklektik
9 Янв 2014 в 19:58

1 ответ

Лучший ответ

The iOS XCTestCase is running on the same Mac under Xcode.

Это не правда. Тестовые примеры iOS не запускаются на Mac. Они вводятся в приложение и работают на устройстве iOS. Xcode слушает только некоторые события устройства.

Давайте упростим вопрос - вы хотите, чтобы iOS и Mac общались. Не имеет значения, в производственном приложении или во время выполнения тестов. XCTests работают так же, как и любая другая часть приложения iOS, и могут обращаться к тем же классам.

Создание сокета от устройства iOS к Mac (или отправка HTTP-запросов с устройства на Mac) - самое простое решение. Сокеты Raw TCP должны быть лучшим решением, если вы хотите, чтобы канал связи работал в обоих направлениях.

1
Sulthan 9 Янв 2014 в 16:16
Султан, спасибо, что разъяснили, как работают XCTests. Я прошу на всякий случай; есть ли у вас предложения, где искать примеры сокетов Raw TCP, обменивающихся данными в обоих направлениях. Думаю, это единственный способ решить проблему, поскольку мне нужно пересечь границу ОС.
 – 
aklektik
9 Янв 2014 в 16:53