Как запустить xctest из командной строки с помощью Xcode 5?
Я нашел инструмент командной строки под названием "xctest", который, по-видимому, может запускать модульные тесты в вашем проекте. Этот исполняемый файл живет здесь:
/Applications/Xcode.app/Contents/Developer/usr/bin/xctest
Когда я пытаюсь запустить этот исполняемый файл в моем xctest пакете, я использую:
$ ./xctest /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest
Однако я получаю следующий вывод:
Test Suite '(null)' started at 2013-11-14 21:16:45 +0000
Test Suite '(null)' finished at 2013-11-14 21:16:45 +0000.
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds
Нет никакой страницы man для xctest, насколько я могу судить, но ввод только. /xctest в командной строке дает:
Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested>
В частности, я хотел бы иметь возможность протестировать только определенный метод в тестовом классе, поэтому я бы хотел использовать эту команду xctest.
Я вижу, что есть способ запустить все тесты из командной строки, например:
$ xcodebuild test -scheme MyApp
Выполняет все модульные тесты и работает правильно (я вижу результаты unit test, в отличие от использования xctest). Но я заинтересован в возможности запуска одного тестового метода из командной строки, например:
$ ./xctest --test MyAppTests/testExample /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest
Ответы
Ответ 1
Несмотря на то, что сообщение об использовании говорит -XCTest, вам нужен аргумент:
xctest -XCTest MyAppTests/testExample testbundle.xctest
Для прямого вызова xctest для работы вам также может потребоваться установить DYLD_FRAMEWORK_PATH
и DYLD_LIBRARY_PATH
в каталог ваших встроенных продуктов. В общем, вам нужно использовать те же аргументы и среду, что и Xcode, вы можете это увидеть, поставив точку останова в одном из ваших тестов, запустив их через Xcode, затем распечатав значения arguments
и environment
для [NSProcessInfo processInfo]
.
Чтобы избежать беспорядка со всем этим примечанием, вы также можете изменить схему в Xcode для запуска только определенных тестов. В разделе Product > Scheme > Edit Scheme выберите тестовое действие и разверните тестовый комплект. Вы можете использовать флажки для выбора тестов для запуска, а тестовое действие xcodebuild будет запускать только эти тесты.