Как получить глобальное тестовое покрытие для папки? - PullRequest
0 голосов
/ 08 мая 2018

При отображении покрытия кодами пройдите тестовое показание покрытия кода для каждого пакета (в процентах).

Есть ли способ показать сводку для папки, которая принимает во внимание все подпапки (подпакеты)?

Мне нужен глобальный процент покрытия кода для всего проекта, одно число, показывающее покрытие кода папки и всех подпапок.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете иметь покрытие всех подпакетов без каких-либо внешних инструментов / с:

go test --coverprofile=coverage.out -coverpkg=./your/package/... ./your/package
-coverpkg pattern1,pattern2,pattern3
    Apply coverage analysis in each test to packages matching the patterns.
    The default is for each test to analyze only the package being tested.
    See 'go help packages' for a description of package patterns.
    Sets -cover.

https://golang.org/cmd/go/#hdr-Testing_flags

0 голосов
/ 08 мая 2018

Я нашел решение своей проблемы.

Сначала я запускаю тест для всего пакета и сохраняю результат теста в файле:

go test --coverprofile=coverage.out ./...

Затем я запускаю скрипт bash, чтобы вычислить мой результат

#!/usr/bin/env bash

covered=0
total=0
while IFS='' read -r line || [[ -n "$line" ]]; do
    IFS=' ' read -r -a array <<< "$line"
    total=$(($total+${array[1]}))
    if [ "${array[2]}" = "1" ]; then
        covered=$(($covered+${array[1]}))
    fi 
done < "$1"
echo $(awk "BEGIN { pc=100*${covered}/${total}; i=int(pc); print (pc-i<0.5)?i:i+1 }")
...