Вопрос по xcode, memory-leaks, instruments, sentestingkit – Запуск модульных тестов SenTestingKit в инструментах

10

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

Это логические тесты, основанные на SenTestingKit, настроенные обычным способом в Xcode 4.2. Я могу запустить их нормально, используя Cmd-U, но не вижу способа запустить их из инструментов или вызвать инструменты для их изучения.

Как я могу сделать эту работу? Нужно ли мне писать новые случаи и встраивать их в приложение?

(Этот вопрос о модульных тестах проверки на утечку, но я думаю, что pre-SenTestingKit.)

Ваш Ответ

2   ответа
5

который намного проще и дает больший контроль над тем, что вы профилируете:

Установите точку останова в начале setUp и запустите тест, который вы хотите запустить. Когда XCode достигнет точки останова, откройте Инструменты и выполните поиск октетов по целям. Тогда вы можете просто присоединиться к этому процессу. Переключитесь на Xcode и продолжайте работу после точки останова, и инструменты должны профилировать все тесты, которые вы хотели запустить.

Надеюсь это поможет.

Вы можете прикрепить в обычном режиме, если вы используете & quot; Профиль & quot; запустить настройку в Xcode?
Там написано "Текущий инструментарий запрещает присоединять". Попытка использовать «Утечки» & Амп; & Quot; Распределение & Quot;
10

SenTest для iOS под инструментами, перейдите к следующему разделу.

OS X Unit Tests in Instruments

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

With Instruments running, create a new document. Choose Target from the Target drop down in the document Check the "Traverse Packages" option in the lower-right to allow you to dig inside of the Xcode package Navigate into /Applications/Xcode and find the otest binary inside of /Applications/Xcode.app/Contents/Developer/Tools/ and select it Add OBCJ_DISABLE_GC with a value of YES as an environment variable (don't do this if you're running GC) Add DYLD_FRAMEWORK_PATH and point at the directory containing of your .octest package Add DYLD_LIBRARY_PATH with the same value as DYLD_FRAMEWORK_PATH Set your Working Directory to be the directory where your .xcodeproj lives For arguments, use -SenTest Self and the full path to your .octest package

Некоторые переменные окружения и ваш рабочий каталог могут быть несущественными, в зависимости от того, нужны ли вам дополнительные платформы для загрузки и есть ли у вас тестовые файлы в каталоге кода, которые требуют чтения. Таким образом, вы можете пропустить эти шаги, если они не относятся к вам.

Как только вы закончите, вы сможете сохранить документ и использовать его для запуска тестов.

iOS Unit Tests in Instruments

После того, как ОП разъяснил требования, я приступил к проверке основных инструкций для этого в проекте на основе симулятора iOS.

Для iOS вам нужна несколько иная конфигурация, поскольку вы отлаживаете другой исполняемый файл и вам нужны разные библиотеки. Таким образом, DYLD_FRAMEWORK_PATH будет включать в себя как путь к каталогу вашего пакета .octest, так и путь к фреймворкам симулятора. Последний будет примерно таким: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/Library/Frameworks в зависимости от того, какую версию симулятора вы используете, и мы будем называть его ниже SDKPATH

With Instruments running, create a new document. Choose Target from the Target drop down in the document Check the "Traverse Packages" option in the lower-right to allow you to dig inside of the Xcode package Navigate into /Applications/Xcode and find the otest binary inside of /Applications/Xcode/Developer/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/usr/bin/ and select it Add DYLD_LIBRARY_PATH and point at the directory containing of your .octest package Add DYLD_ROOT_PATH pointed just at the SDKPATH (above) Add IPHONE_SIMULATOR_ROOT with SDKPATH (above) Add DYLD_FRAMEWORK_PATH and point at the directory containing of your .octest package and the SDKPATH (above), separating them by a colon (:) in the path list Add CFFIXED_USER_HOME with your iPhone simulator home (~/Library/Application Support/iPhone Simulator although I've expanded it before putting it here, as I'm not sure the ~ gets interpreted) Set your Working Directory to be the directory where your .xcodeproj lives For arguments, use -SenTest Self and the full path to your .octest package
Поблагодаритьyou для составления этих инструкций! Я наконец-то обнаружил некоторые утечки памяти, выполнив следующие действия! paulmelnikow
@gaige Где находится "Траверс Пакеты"? вариант? Используя Xcode 4.6.3 и попробуйте сделать это на iOS ...
Спасибо @noa за указание, что один из путей был неправильным. Исправлено сейчас.
Отредактировано, чтобы включить инструкции для проектов iOS SenTestKit. В оригинальном посте ничего не говорилось об iOS, поэтому я выбрал OS X. Однако я заставил его работать, и вот пересмотренный набор инструкций.
Я бы хотел, чтобы это работало, как у вас, но ничего не происходит, когда я запускаю запись. Я выбрал двоичный файл otest и установил флаги DYLD в / Users / compName / Library / Developer / Xcode / DerivedData / projectName / Build / Products / Debug-iphonesimulator (пакет .octest находится в этом каталоге), а аргумент - -SenTest Self / Users / everythingInTheAboveLink и рабочий каталог в директории, содержащей .xcodeproj. Но ничего. Предложения? Я, наверное, что-то здесь упускаю ... не эксперт по приборам. Заранее спасибо.

Похожие вопросы