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!