Можно ли запускать тесты на основе XCTest в инструментах в Xcode 5?

Глядя на модульное тестирование XCTest и Xcode 5 и не видя, как запускать мои модульные тесты в инструментах в Xcode 5 ...

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

Возможный?


person Dad    schedule 09.01.2014    source источник
comment
Обратите внимание на ответ @quelish ниже. Теперь это доступно в Xcode 7 через контекстное меню в самом тесте - Спасибо команде Xcode!   -  person Dad    schedule 31.01.2016


Ответы (5)


Думаю, это самый простой способ:

  1. Установите точку останова где-нибудь в ваших тестах (я делал это в методе настройки)
  2. Открыть новый документ в инструментах
  3. Запустите приложение и убедитесь, что оно остановлено на точке останова.
  4. В раскрывающемся списке «Цель» в инструментах выберите «Присоединить к процессу» и прокрутите вниз до своего процесса.
  5. Нажмите на запись, а затем возобновите работу в XCode
person psobko    schedule 14.01.2014
comment
Смотрю на ту же проблему. В моих модульных тестах есть зомби, и я не могу понять, что его вызывает. Какой процесс выбрать? - person Fergal Rooney; 23.02.2014
comment
@FergalRooney, это будет то, как называется ваше приложение. Вот снимок экрана, прикрепленный к созданному мною тест-проекту под названием ShapeAnimationTest. Я забыл упомянуть в своем исходном ответе, что вам нужно запустить приложение, прежде чем найти его в инструментах. - person psobko; 24.02.2014
comment
Спасибо за скриншот. Я попробовал это, выбрав свое приложение, как в перечисленных вами шагах, но я не вижу никаких выделений в списке при запуске инструмента и после продолжения теста после установки точки останова. Похоже, это вообще не профилирование приложения. - person Fergal Rooney; 25.02.2014
comment
Если этот снимок экрана является индикатором, этот ответ, похоже, работает для приложений, но не для пакетов модульных тестов. - person paulmelnikow; 31.03.2014
comment
Для меня это работает для тестовых пакетов, выбрав процесс «xctest». Однако, если мне нужно отследить зомби, мне нужно было сделать это по-другому, см. Мой ответ о другом методе. - person Pellet; 30.07.2014
comment
Хороший! Я ответил на тот же вопрос с помощью SenTest в прошлом году, как жаль, что я этого не видел - stackoverflow.com/questions/10962388/ - person Daniel Galasko; 23.08.2014
comment
Это может сработать, но требует, чтобы мы профилировали в режиме отладки. - person Raphael; 14.03.2017

В Xcode щелкните правой кнопкой мыши свой тест в навигаторе тестов и выберите «Профиль« TestName »»:

память модульного теста профиля инструментов

person quellish    schedule 30.01.2016
comment
Да! Запрос функции сработал! Теперь доступно в Xcode. (не было в Xcode 5). Спасибо, что указали на него людям, которые могут найти этот старый вопрос. - person Dad; 31.01.2016
comment
Похоже, это не работает в Xcode 8. Пункт меню все еще там, но Instruments просто показывает все процессы, а Xcode не запускает тестирование. - person fzwo; 17.10.2016
comment
В Xcode 8 это может работать согласованно только с тестами пользовательского интерфейса. - person quellish; 17.10.2016
comment
Не удалось установить запрошенное приложение. Не удалось найти приложение по указанному пути. Xcode 10.2.1. Решение заключалось в том, что мне нужно было добавить наше приложение в раздел «Профиль» нашей схемы тестирования. Тем не менее, это еще не 100%. - person Alex Zavatone; 27.06.2019
comment
Это запускает инструменты для меня, но, похоже, дальше не идет. Явных ошибок нет. Мне предлагается выбрать шаблон, открывается новый документ, а затем… ничего. Xcode 12.4 на Bug Sur. - person Rick; 15.04.2021

Вот правильный способ сделать это в Xcode 6:

1) В вашем проекте Xcode откройте папку «Продукты», выберите продукт «.xctest», щелкните правой кнопкой мыши и, наконец, выберите «Показать в Finder» в контекстном меню.

2) Запустите инструменты и создайте новый документ с шаблоном по вашему выбору.

3) Сделайте «Выбрать цель ...» для документа.

4) Перейдите и выберите инструмент, который Xcode использует для запуска тестов, расположенных в /Applications/Xcode.app/Contents/Developer/usr/bin/xctest (вы можете найти это место с помощью xcrun -f xctest в Терминале) - вам нужно будет включить «Traverse Packages» для навигации внутри приложения Xcode.

5) Перетащите из Finder в поле «Аргументы» продукт «.xctest», показанный на шаге 1 - это вводит его абсолютный путь.

6) Нажмите «Выбрать».

Теперь вы готовы запускать свои модульные тесты из Instruments!

введите описание изображения здесь

person Pol    schedule 14.01.2015

Я создал новую цель на основе тестируемой цели приложения Mac, а затем добавил классы xctest в файлы для компиляции.

Затем я добавил /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework к фреймворкам для связывания.

Затем добавил его путь $ (DEVELOPER_DIR) /Platforms/MacOSX.platform/Developer/Library/Frameworks в Пути поиска Runpath.

Затем в main.m я добавил следующее:

    XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"];
    [suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]];
    [suite run];

Это запустило тест testCompleteSequentialText для класса VideohogCachingTest, который мне нужно было запустить как обычное приложение, что позволило мне запустить тест либо командой + R, либо, в данном случае, профилированием. с помощью команды + I. Тогда я мог поймать зомби и отследить проблему, что раньше было для меня невозможным. Если вы хотите запустить все свои тесты, вы можете:

XCTestSuite *suite = [XCTestSuite defaultTestSuite];
[suite run];
person Pellet    schedule 30.07.2014
comment
Это помогло мне, потому что кажется, что вам нужно скомпилировать для профилирования, чтобы получить символы Swift в Allocations. Обратите внимание, что мне пришлось добавить этот путь также в пути поиска Framework и отредактировать схему, чтобы профиль использовал конфигурацию отладки. - person tmandry; 13.12.2015

Profile предложить Instruments как Activity Monitor, Allocations, _5 _...

Есть несколько примечаний:

Приложение

  • Монитор активности доступен только для реального устройства

Пакет для модульного тестирования

  • Доступно только для Симулятора
  • Монитор активности недоступен

Пакет для тестирования пользовательского интерфейса

  • Профилирование недоступно
person yoAlex5    schedule 14.11.2020