Как запустить 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 будет запускать только эти тесты.