2013-11-14 6 views
14

Я нашел инструмент командной строки под названием «xctest», который, по-видимому, может запускать модульные тесты в вашем проекте. Этот исполняемый файл живет здесь:Как запустить xctest из командной строки с помощью Xcode 5?

/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 

Нет никакой страницы для xctest, насколько я могу судить, но ввод только ./xctest в командной строке дает:

Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested> 

В частности, я хотел бы иметь возможность протестировать только определенный метод в тестовом классе, поэтому я хотел бы использовать эту команду xctest.

Я вижу, что есть способ запустить все тесты из командной строки, например:

$ xcodebuild test -scheme MyApp 

Это запускает все модульные тесты и работает должным образом (я вижу, мои результаты испытаний единицы, в отличие при использовании xctest). Но я заинтересован в возможности запустить один тестовый метод из командной строки, например:

$ ./xctest --test MyAppTests/testExample /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest 

ответ

5

Несмотря на то, что говорит -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 будет запускать только эти тесты.

+1

Спасибо! Мне не нужно было устанавливать переменные среды для DYLD_FRAMEWORK_PATH и DYLD_LIBRARY_PATH. Мне нужно было убедиться, что у меня есть правильное место размещения xctest в Build/Products/Testing, а не Build/Products/Debug. Таким образом, мой путь был следующим: ./xctest -XCTest MyTestClass/testMyTestFunction /Users/username/Library/Developer/Xcode/DerivedData/MyApp-abcdefghikjklmn/Build/Products/Testing/MyAppTests.xctest –

+0

Спасибо за отзыв об отключении тестов в схема. Вы можете выбрать несколько строк и использовать пробел для переключения выбора - очень полезно! – funroll

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