Цель
Наша цель - выполнить наши модульные тесты в среде непрерывной интеграции (Jenkins)
(Я считаю, что для каждого вопроса важно указать, что именно пытается достичь. Возможно, проблема может быть решена совсем по-другому)
Обновление: больше: "Почему вы хотите это сделать?"
Во-первых, мы говорим об определенном, саморазвивающемся оборудовании. И я хотел бы, чтобы Тест непрерывной интеграции рассказывал мне, изменил ли кто-либо поведение поля, не сообщив всем разработчикам (да, да, я знаю, таких вещей никогда не бывает...)
Во-вторых, некоторые (не все) из наших соединений используют сертификаты, которые по умолчанию недействительны, поэтому у нас есть код для проверки действительности сертификата (SecTrustEvaluate
и т.д.). В идеале, конечно, наши тесты также проверили бы этот код. Но это кажется слишком большим спросом.
В-третьих: Ну, почему я должен что-то издеваться над чем-нибудь, если у меня будет реальная сделка? У IDE нет проблем с этим, зачем нужна командная строка.
И если бы я хотел предсказуемости, я бы вернул YES
во все мои тесты;) (и я видел, как это делают люди). Нет, я хочу знать, действительно ли код действительно работает с нашим устройством. Это какое-то извращенное желание?
Проблема решена до сих пор
Запуск тестов из командной строки звучит довольно странно, но
xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO clean test
приводит к уродливой ошибке:
unsupported build action 'test'
Итак, я искал в Интернете и нашел эту статью на Выполнение тестов OCUnit из командной строки.
Я выполнил все шаги, и я могу запустить свои тесты из командной строки следующим образом:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
Оставшаяся проблема
Однако теперь любое NSURLConnection на SSL-сервер завершится неудачно, потому что "сертификат для этого сервера недействителен". Я слышал о проблемах с цепочкой ключей при запуске тестов из командной строки, но может ли это быть правдой? Любое SSL-соединение будет отклонено?
Воспроизведение
Получить образец в https://github.com/below/SSLTestDemo. Откройте его и запустите образец теста, используя собственную команду Test ⌘U Xcode. Тест должен быть успешным.
Теперь запустите тест в командной строке:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
Сбой теста из-за "Недопустимый сертификат для этого сервера". ошибка.
Любые указатели?
- Я делаю это неправильно?
- Это настоящая ошибка?
- Если да, есть ли рабочие?
Любой ввод оценивается!