Подтвердить что ты не робот

Невозможно выполнить тесты из командной строки через xcodebuild

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

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

Он создает приложение, но тестовые файлы не запускаются.

может кто-то помочь? Благодаря

4b9b3361

Ответ 1

Я нашел свойство name, чтобы потребовать больше спецификаций.

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

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

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

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

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

Ответ 2

Вы не сказали, какую версию 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 странице руководства. (Вы даже можете использовать его для запуска тестов на подключенных устройствах iOS!)

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Приземлился здесь, чтобы найти разрешение для аналогичной ошибки 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 }

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