Heim >Backend-Entwicklung >Golang >Wie kann ich externe Paketanrufe in meinen Go-Abdeckungsbericht einbeziehen?

Wie kann ich externe Paketanrufe in meinen Go-Abdeckungsbericht einbeziehen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 10:27:10867Durchsuche

How Can I Include External Package Calls in My Go Coverage Report?

Einbeziehen von Paketanrufen in die Go-Abdeckung

Problem:

In einem Go-Projekt mit einem Aufgrund der Struktur mit mehreren Paketen werden bestimmte Funktionen in Paketen außerhalb des aktuell getesteten Pakets vom Abdeckungsbericht ignoriert. Insbesondere Funktionen in bar.go im DB-Paket zeigen keine Abdeckung an, obwohl sie von foo.go im API-Paket aufgerufen werden.

Lösung:

An Um dieses Problem zu beheben, sollte das Flag -coverpkg zum Befehl go test hinzugefügt werden. Das Flag -coverpkg gibt an, welche Pakete in den Abdeckungsbericht aufgenommen werden sollen.

Erklärung:

Standardmäßig enthält der Abdeckungsbericht nur Pakete, die direkt vom Test importiert werden Paket. In diesem Fall importiert foo_test.go (das Testpaket für foo.go) die Datenbank nicht direkt, sodass die Funktionen in bar.go nicht abgedeckt werden.

Das Hinzufügen des Flags -coverpkg schließt explizit die angegebenen Pakete ein in der Abdeckungsanalyse. In diesem Fall würde der folgende Befehl alle Pakete im aktuellen Verzeichnis (./...) in den Abdeckungsbericht aufnehmen:

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

Dadurch wird ein Abdeckungsbericht generiert, der den Funktionsaufruf für bar enthält. Gehen Sie von foo.go.

Hinweis:

Die Verwendung des Flags -coverpkg kann sich auf die Testausführungszeit auswirken, da es eine Analyse erfordert größere Anzahl von Paketen. Es ist jedoch erforderlich, genaue Abdeckungsinformationen für paketübergreifende Funktionsaufrufe zu erhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich externe Paketanrufe in meinen Go-Abdeckungsbericht einbeziehen?. 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