2013-11-27 2 views
19

Я пытаюсь создать и запустить тестовые примеры с использованием командной строки для тестовых примеров iOS. Я дал следующую команду:Невозможно выполнить тесты из командной строки с помощью xcodebuild

xcodebuild -target AppEngineTests -configuration Debug -sdk iphonesimulator TEST_AFTER_BUILD=YES clean build 

Он строит приложение, но testcases не выполняются.

Может кому-то помочь? Спасибо

+0

Какие сообщения об ошибках вы получили? – ULazdins

ответ

17

Я нашел объект name, чтобы получить более подробную информацию.

xcodebuild test -workspace #{WORKSPACE_FILE} -scheme #{TEST_SCHEME} -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.0' 

Было, что в конечном итоге сработало для меня. iPhone был ограничен и/или непредсказуем.

В качестве другого плаката (не может найти ссылку) упомянутая «платформа» свободно соответствует делителю в списке целей, «имя» соответствует подвыборке, а параметр OS соответствует правой стороне шеврона в том же списке минус «iOS».

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

Удивительно, что это за проблема. И насколько хорошо он работал, когда был достигнут правильный призыв.

+0

Спасибо за редактирование, Гийом, но я использовал его на нескольких строках, потому что он требует прокрутки, чтобы читать иначе! – tooluser

+0

Как сделать сборку для реального устройства –

+0

Это одно из значений, доступных параметру 'destination ', @QadirHussain. – tooluser

12

Вы не сказали, какую версию Xcode вы используете, но поскольку вы отметили свой вопрос с помощью «xctest», кажется безопасным предположить, что у вас есть Xcode 5 или новее.

Xcode 5 значительно улучшает поддержку для проведения тестов в xcodebuild через глагол test. Вам нужно будет указать схему и адресата вместо цели при использовании этого глагола, поскольку она действует точно так же, как команда Test в Xcode IDE.

Так, например, если у вас есть общая схема в вашем проекте или рабочей области имени AppEngine, который имеет свою схему испытаний действие правильно сконфигурированный, вы могли бы просто использовать

xcodebuild test -scheme AppEngine -destination 'platform=iOS Simulator,name=iPad' 

запустить все устройства тесты, сконфигурированные для схемы AppEngine в iOS Simulator, настроенные как iPad с новейшей iOS. Более подробная информация о синтаксисе спецификатора назначения находится в xcodebuild man page. (Вы можете даже использовать его для запуска тестов на подключенных устройствах iOS!)

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

+1

на 5, что синтаксис назначения дает: xcodebuild: error: опция 'Destination' требует хотя бы одного параметра формы 'key = value'. Вы имели в виду «platform = iOS Simulator, name = iPad»? –

+0

Да, я обновил ответ. –

+0

Я нахожу, что это просто проверяет сборку и не запускает модульные тесты. Пробовал это с помощью теста xcodebuild и xcodebuild тест ... не повезло. –

0

У меня была аналогичная проблема с сборкой Xcode. В моем случае проблема заключалась в том, что у меня не было никаких тестов, связанных с моей схемой.

Пожалуйста, смотрите мой SO ответ (с диаграммой) here

0

Приземлился здесь ищет разрешение для подобной ошибки xcodebuild. Как и в случае добавления, вы также можете передать один ключ = val в -destination, например -destination 'platform=iOS', и xcodebuild сообщит вам всю альтернативу, доступную для этой схемы.

λ ~/Development/app-ios/ task/JIOS-400-Earl-Grey-Spike* xcodebuild -workspace app.xcworkspace -scheme app -destination 'platform=iOS' -derivedDataPath "build" build-for-testing 

User defaults from command line: 
    IDEDerivedDataPathOverride = /Users/schoudhary/Development/app-ios/build 

xcodebuild: error: Unable to find a destination matching the provided destination specifier: 
     { platform:iOS } 

    Missing required device specifier option. 
    The device type “Generic iOS Device” requires that either “name” or “id” be specified. 
    Please supply either “name” or “id”. 

    Available destinations for the "App" scheme: 
     { platform:iOS Simulator, id:D248DB01-A852-4360-A9C0-2D71AFE478D7, OS:10.3, name:iPad Air } 
     { platform:iOS Simulator, id:CE87AF5A-141C-43DA-AE61-AF53593F37F7, OS:10.3, name:iPad Air 2 } 
     { platform:iOS Simulator, id:E93B43E4-D24E-4927-B9EE-0375E15DCBD5, OS:10.3, name:iPad Pro (9.7 inch) } 
     { platform:iOS Simulator, id:6D71DB17-0FE2-4D5E-BEE6-CC696445BA11, OS:10.3, name:iPad Pro (12.9 inch) } 
     { platform:iOS Simulator, id:F7E37EF4-5E72-438A-A286-216C20158B47, OS:10.3, name:iPhone 5 } 
     { platform:iOS Simulator, id:24653844-AE99-4B5B-8332-9FFD2208172F, OS:10.3, name:iPhone 5s } 
     { platform:iOS Simulator, id:FD2089A4-BF3F-4F98-8E33-B7EFDCFE5B4D, OS:10.3, name:iPhone 6 } 
     { platform:iOS Simulator, id:6EF0DFBD-E99E-4EB3-9C51-6E749F41B6E7, OS:10.3, name:iPhone 6 Plus } 
     { platform:iOS Simulator, id:846E631C-6285-4B91-9BA6-1AB6E66C88DB, OS:10.3, name:iPhone 6s } 
     { platform:iOS Simulator, id:A6943ADC-F6EF-42F6-9958-D966DFC419FC, OS:10.3, name:iPhone 6s Plus } 
     { platform:iOS Simulator, id:B41ABED0-7554-438A-97AC-F34943ED4D79, OS:10.3, name:iPhone 7 } 
     { platform:iOS Simulator, id:20F1582C-0D19-4F42-9DAD-43138FB923B9, OS:10.3, name:iPhone 7 Plus } 
     { platform:iOS Simulator, id:683BB5CA-E0A8-4CE4-B0DD-AED4C4295B90, OS:10.3, name:iPhone SE } 

    Ineligible destinations for the "App" scheme: 
     { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Generic iOS Device } 
     { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Generic iOS Simulator Device } 

просто еще один полезный способ получить нужное место назначения.

1

Следует отметить, что вы можете использовать instruments -s devices, чтобы получить список всех доступных устройств.

Вы также должны передать строку как -destination 'platform=iOS Simulator,id=ID_OF_THE_SIMULATOR', так как по какой-то причине она не любит пробелов между парами ключ = значение.

Смежные вопросы