Как настроить gcov для анализа покрытия кода в iPhone SDK? - PullRequest
6 голосов
/ 22 декабря 2009

Я недавно начал модульное тестирование приложения, которое я пишу для iPhone. У меня есть основы создания собственных тестов, даже если они кажутся немного неоптимальными. Однако у меня возникли серьезные проблемы с настройкой анализа покрытия кода с помощью gcov.

Я следовал инструкциям здесь: http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/,, которые повторяются очень похожим образом в других местах. Я пытался использовать AppleScript от Google из их набора инструментов для Mac, чтобы сделать это на тот случай, если я что-то неправильно ввел в Xcode.

Я использовал образец AppleUnitTests от Apple в качестве базового проекта и просто запустил AppleScript от Google, чтобы включить тестирование покрытия кода с целью CalcTests, чтобы получить хороший источник автоматизированного примера того, что он не работает. Независимо от того, какой сценарий я использую, мой собственный код Apple, вручную устанавливающий правильные переменные или позволяющий AppleScript Apple сделать это для меня, все, что я получаю, это следующие ошибки в консоли отладки после завершения тестирования:

profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip

Файлы gcda не созданы, и поэтому мне нечего анализировать. Любая помощь с этим будет принята с благодарностью.

1 Ответ

6 голосов
/ 23 декабря 2009

Решение состоит в том, что эти руководства относятся к запуску кода в симуляторе iPhone. Поскольку я выполняю тесты на уровне приложений, я выполняю перекрестное профилирование и должен следовать этой информации .

Затем я устанавливаю переменную среды GCOV_PREFIX, чтобы выгружать ее в каталог документов моего приложения, а затем использую Организатор в Xcode, чтобы загрузить пакет моего приложения с устройства, чтобы получить файлы .gcda из каталога документов. Это довольно громоздко и вряд ли поддается автоматическому тестированию покрытия, но это единственное решение, которое я вижу, учитывая ограничения работы в песочнице и использования классов, доступных только для тестирования на устройстве (а именно MediaPlayer.framework).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...