#iphone #objective-c #xcode #unit-testing #code-coverage
#iPhone #objective-c #xcode #модульное тестирование #покрытие кода
Вопрос:
Мне нужно покрытие кода для моего приложения iPhone.
Как мне получить покрытие кода для Xcode 4?
Комментарии:
1. Clang / LLVM не поддерживают gcov и не предоставляют возможностей покрытия кода. Возможно, вы сможете использовать gcov с GCC в зависимости от того, выполняется ли сборка вашей программы с использованием GCC. Ознакомьтесь с этим отчетом об ошибке на LLVM и подумайте о том, чтобы также подать заявку на радар запросов функций .
2. В вашем info.plist для UIApplicationExitsOnSusspend задано значение YES.plist для UIApplicationExitsOnSusspend
3. @Bavarious: Согласно вашему отчету об ошибках, clang теперь поддерживает покрытие?
4. @Joh Да, nlewycky добавил поддержку gcov в магистраль LLVM, и нет, отчет об ошибке не мой. 😉 Однако я не уверен, сделает ли / когда Apple это доступным через Xcode. Возможно, вы сможете использовать его, если создадите LLVM локально.
Ответ №1:
Эти шаги помогут.
-
Создайте новую конфигурацию сборки (‘Coverage’), дублированную из конфигурации ‘Debug’.
-
Откройте настройки сборки для основного целевого объекта, убедитесь, что выбрана ваша новая конфигурация, и:
Enable “Generate Test Coverage Files” Enable “Instrument Program Flow” Add “-lgcov” to “Other Linker Flags”
-
Скомпилируйте приложение в режиме покрытия.
-
Проверьте файлы .gcno из папки вашего пакета приложений.
Покрытие-iphonesimulator / applicationname.build /Objects-обычное
откройте файлы .gcno с CoverStory. Загрузите CoverStory с
http://code.google.com/p/coverstory/downloads/list
Справочные сайты
Ответ №2:
Я не смог найти хороший пример этого, так что, надеюсь, это поможет кому-то еще.
Если вы хотите сгенерировать HTML на основе покрытия вашего кода (как только вы сгенерируете файлы .gcda), вы можете установить lcov
и использовать эти команды:
function generate-codecoverage-html() {
if [[ $1 == "-h" || ! $# -eq 2 ]]; then
echo " usage: $0 path/to/codecoverage/dir/ path/to/htmldir/"
return
fi
timestamp=$(date)
tmpfile="/tmp/codecoverage.info-$date"
lcov --no-checksum --directory "$1" --capture --output-file "$tmpfile"
genhtml --output-directory "$2" "$tmpfile"
}
Комментарии:
1. где ‘lcov’?
2. нашел это; github.com/linux-test-project/lcov , ссылка на github.com/jonreid/XcodeCoverage