Heim >Backend-Entwicklung >Golang >Warum schließt die Go-Abdeckung Funktionen in externen Paketen aus?

Warum schließt die Go-Abdeckung Funktionen in externen Paketen aus?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 06:46:10485Durchsuche

Why Does Go Coverage Exclude Functions in External Packages?

Go Coverage schließt Funktionen in externen Paketen aus

Beim Ausführen der Code Coverage für ein Go-Projekt, das mehrere Pakete enthält, kann es zu einer Situation kommen, in der Funktionen auftreten in anderen als dem getesteten Paketen sind nicht im Abdeckungsbericht enthalten. Dies kann auftreten, wenn eine Funktion in einem Paket eine Funktion in einem anderen Paket aufruft.

Problem:

Wie in der bereitgestellten Frage beschrieben, ein Projekt mit einer ähnlichen Paketstruktur Zu den folgenden Exponaten wird dieses Problem angezeigt:

app/
    api/
        foo.go
        test_foo.go
src/
    db/
        bar.go

foo.go ruft eine Funktion in bar.go auf. Der Abdeckungsbericht für bar.go zeigt jedoch null abgedeckte Zeilen.

Lösung:

Um dieses Problem zu beheben, müssen Sie beim Ausführen der Abdeckung das Coverpkg-Flag einschließen prüfen. Dieses Flag gibt an, dass die Abdeckung für alle Pakete unabhängig von ihrem Standort erfasst werden soll. Der geänderte Befehl zum Ausführen des Abdeckungstests lautet:

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

Durch Hinzufügen des coverpkg-Flags enthält der Abdeckungsbericht nun die Funktionsaufrufe von foo.go bis bar.go.

Das obige ist der detaillierte Inhalt vonWarum schließt die Go-Abdeckung Funktionen in externen Paketen aus?. 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