Охват модульных тестов iOS - Отчет о работе сонара - xccov - PullRequest
2 голосов
/ 18 июня 2019

Инструмент xccov создает отчет о покрытии модульных тестов только для покрытых строк кода.Таким образом, если файл example.swift содержит 20 строк, а 10 покрыт юнит-тестами, охват составит 50%.

Карма (используется в разработке Angular 2) создает отчет не только для строккода, а также операторов, ветвей и функций.

Возможно ли настроить xccov, или есть аналогичный инструмент для достижения этого в разработке под iOS?Спасибо!

1 Ответ

0 голосов
/ 01 июля 2019

Xccov не генерирует данные покрытия.Xccov может читать отчеты о покрытии из инструмента xcodebuild:

  1. Чтобы получить данные о покрытии, вы должны выбрать сбор данных о покрытии в своей тестовой схеме: edit_scheme

  2. В вашем скрипте CI вы можете добавить флаг -resultBundlePath, чтобы выбрать папку, в которую будут сохраняться данные покрытия.

  3. Затем вы можете использовать xccov для получения следующей информации:

    • Общее целевое покрытие по xccov view --only-targets report.xccovreport
    • Покрытие по файлу xccov view --files-for-target target_name report.xccovreport
    • Покрытие по каждой функции xccov view --func- tions-for-file name_or_path report.xccovreport
    • Необработанные данные покрытия по строкелиния xccov view --file file_name report.xccovarchive

result

Вы можете использовать флаг --json для анализа результатов по сценарию.

Для получения дополнительной информации о xccov вы можете прочитать man xccov или посмотреть сеанс WWDC Что нового в тестировании

Итак, xccov предоставит вам статистику для функций из коробки.Если вы хотите больше.Например, статистику для операторов и веток вы можете создать самостоятельно, используя данные SourceKit и xccov.SourceKit может предоставить информацию об AST исходного кода и о том, где находится оператор.По местоположению вы можете сопоставить информацию о покрытии в отчете xccov.

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