Можно ли запускать тесты на основе XCTest в разделе «Инструменты» в Xcode 5?
-
21-12-2019 - |
Вопрос
Глядя на модульное тестирование XCTest и Xcode 5 и не видя, как запускать модульные тесты в разделе «Инструменты» в Xcode 5...
В частности, я хотел бы искать утечки во время теста (в данном случае это не обязательно автоматизировать, хотя, очевидно, это было бы полезно).
Возможный?
Решение
Я думаю, что это самый простой способ:
- Установите точку останова где-то в тестах (я делаю это в методе установки)
- Откройте новый документ в инструментах
- Запустите приложение и убедитесь, что он остановлен на точке останова
- Из целевого выпадающего в инструментах Выберите прикрепление к процессу и прокрутите вниз до вашего процесса
- Нажмите на запись, а затем возобновите в xcode
Другие советы
Вот правильный способ сделать это в Xcode 6:
1) В проекте Xcode откройте папку «Продукты», выберите продукт «.xctest», щелкните правой кнопкой мыши и, наконец, выберите «Показать в Finder» в контекстном меню.
2) Запустите Инструменты и создайте новый документ с выбранным вами шаблоном.
3) Сделайте «Выбрать цель...» для документа.
4) Перейдите и выберите инструмент, который Xcode использует для запуска тестов, расположенный по адресу /Applications/Xcode.app/Contents/Developer/usr/bin/xctest
(вы можете найти это место, используя xcrun -f xctest
в Терминале) — вам нужно будет включить «Обход пакетов» для навигации внутри приложения Xcode.
5) Перетащите из Finder в поле «Аргументы» продукт «.xctest», обнаруженный на шаге 1, — это введет его абсолютный путь.
6) Нажмите «Выбрать».
Теперь вы готовы запускать модульные тесты из инструментов!
I created a new target based on the mac app target I am testing, then added the xctest classes to the files to compile.
I then added the /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework to the frameworks to link against.
Then added its path $(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/Frameworks to the Runpath Search Paths.
Then in the main.m I added the following:
XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"];
[suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]];
[suite run];
This ran the test testCompleteSequentialText on the class VideohogCachingTest I needed to run as a normal application, therefore allowing me to run the test by either command+R or in this case, profiling with command+I. I could then catch a zombie and trace the problem, which was not a possibility for me previously. If you'd like to run all your tests you can do:
XCTestSuite *suite = [XCTestSuite defaultTestSuite];
[suite run];