Heim >Backend-Entwicklung >Golang >Wie kombiniere ich Code-Coverage-Ergebnisse aus mehreren Go-Paketen?

Wie kombiniere ich Code-Coverage-Ergebnisse aus mehreren Go-Paketen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-24 11:44:17635Durchsuche

How to Combine Code Coverage Results from Multiple Go Packages?

So konsolidieren Sie Code-Coverage-Ergebnisse für mehrere Pakete in Go

Beim Testen mehrerer Pakete in einer Go-Bibliothek kann es von Vorteil sein, sie zu erhalten einen umfassenden Überblick über die Codeabdeckung. Standardmäßig stellt die Verwendung des Flags -cover mit go test Abdeckungsinformationen für einzelne Pakete bereit.

Um Abdeckungsdaten über alle Pakete hinweg zu aggregieren, können Sie einen von zwei Ansätzen verwenden:

Verwenden -coverpkg in Go 1.10 und höher:

In Go 1.10 und höher können Sie mit dem Flag -coverpkg a angeben Durch Kommas getrennte Liste der Abdeckungsziele. Um alle Abhängigkeiten des Testpakets abzudecken, verwenden Sie:

go test -v -coverpkg=./... -coverprofile=profile.cov ./...
go tool cover -func profile.cov

Verwenden eines Bash-Skripts in früheren Go-Versionen:

Für Go-Versionen vor 1.10 sollten Sie die Verwendung in Betracht ziehen ein Bash-Skript zum Sammeln und Konsolidieren von Abdeckungsdaten:

#!/bin/bash
set -e

echo 'mode: count' > profile.cov

for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d);
do
if ls $dir/*.go &> /dev/null; then
    go test -short -covermode=count -coverprofile=$dir/profile.tmp $dir
    if [ -f $dir/profile.tmp ]
    then
        cat $dir/profile.tmp | tail -n +2 >> profile.cov
        rm $dir/profile.tmp
    fi
fi
done

go tool cover -func profile.cov

Dieses Skript durchläuft Verzeichnisse mit Go-Dateien und führt Tests aus mit aktivierter Abdeckung und Anhängen der Ergebnisse an eine konsolidierte Profildatei (profile.cov). Anschließend können Sie mit dem Go-Tool-Cover eine Zusammenfassung der gesamten Codeabdeckung erstellen.

Das obige ist der detaillierte Inhalt vonWie kombiniere ich Code-Coverage-Ergebnisse aus mehreren Go-Paketen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn