Beim Unit-Testen von Code in verschiedenen Ordnern innerhalb eines Go-Projekts kann es zu Diskrepanzen in der Codeabdeckungsberichterstattung kommen. Dies kann frustrierend sein, da Sie möglicherweise erwarten, dass der gesamte Code abgedeckt wird, wenn Sie Tests in den Unterordnern ausführen.
Problem:
Obwohl Code aus dem Stuff-Ordner im ausgeführt wird Im Ordner stuff_test zeigt der Abdeckungsbericht 0 % der abgedeckten Aussagen an. Es handelt sich um die folgende Projektstruktur:
stuff/stuff.go -> package: stuff test/stuff/stuff_test.go -> package: test
Mögliche Ursache:
Die Codeabdeckungsanalyse ist standardmäßig auf das getestete Paket beschränkt. In diesem Fall befindet sich das Paket stuff_test in einem anderen Ordner als das Paket stuff, das das Problem verursacht.
Lösung:
Um dieses Problem zu beheben, können Sie Folgendes verwenden: die Option -coverpkg beim Ausführen von go test. Mit dieser Option können Sie die Pakete angeben, für die Sie Abdeckungsinformationen sammeln möchten.
go test ./test/... -coverprofile=cover.out -coverpkg ./...
Dieser Befehl wendet die Abdeckungsanalyse auf alle Pakete an, die dem angegebenen Muster entsprechen, in diesem Fall alle Pakete im aktuelles Verzeichnis und seine Unterverzeichnisse.
Anzeigen des Abdeckungsberichts:
Sobald die Tests ausgeführt wurden, können Sie eine Abdeckung generieren Erstellen Sie einen Bericht mit dem Befehl go tool cover.
go tool cover -html=cover.out
Dieser Befehl erstellt einen HTML-Bericht mit dem Namen cover.out, den Sie in einem Webbrowser öffnen können, um die Abdeckungsinformationen für alle angegebenen Pakete anzuzeigen.
Das obige ist der detaillierte Inhalt vonWarum zeigt mein Go-Code-Abdeckungsbericht beim Testen über verschiedene Ordner hinweg 0 % an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!