Abdeckungsstatistiken für Tests in separaten Paketen
Beim Aufteilen von Tests aus Codedateien in verschiedene Pakete wird es schwierig, Abdeckungsstatistiken für zu erhalten Paket im Test. Betrachten Sie die folgende Verzeichnisstruktur:
api_client: Client.go ArtistService.go ... api_client_tests: ArtistService.Events_test.go ArtistService.Info_test.go UtilityFunction.go ...
Das Ausführen von go test bandsintown-api/api_client_tests -cover bietet nur Abdeckung für die UtilityFunction.go-Datei und lässt das eigentliche api_client-Paket aus.
Lösung:
Um dieses Problem zu beheben, verwenden Sie Folgendes Befehl:
go test -cover -coverpkg "api_client" "api_client_tests"
Mit diesem Befehl können Sie die Tests mit aktivierter Abdeckungsmessung speziell für das api_client-Paket ausführen.
Hinweis zur Paketstruktur:
Es ist jedoch zu beachten, dass die Aufteilung von Codedateien und Tests in verschiedene Verzeichnisse in Go nicht empfohlen wird. Stattdessen wird durch das Beibehalten von Tests innerhalb desselben Pakets sichergestellt, dass sie ordnungsgemäß auf die Interaktion mit der öffentlichen API des Pakets beschränkt sind.
Code-Zugänglichkeit für Black-Box-Tests:
Wenn die Ziel ist es, Black-Box-Tests durchzuführen, bei denen private Variablen und Funktionen auf Paketebene für Tests nicht zugänglich sind. Die folgende Problemumgehung kann verwendet werden:
<code class="go">// api_client.go package api_client // will not be accessible outside of the package var privateVar = 10 func Method() { } // api_client_test.go package api_client_tests import "testing" import "api_client" // import the package **without** renaming it func TestBlackBox(t *testing.T) { api_client.Method() // call the method from the "api_client" package }</code>
Dies Ermöglicht Tests den Zugriff auf Elemente auf Paketebene, ohne die Verzeichnisstruktur zu ändern oder Kapselungsregeln zu verletzen.
Das obige ist der detaillierte Inhalt vonWie kann ich Abdeckungsstatistiken für ein Paket abrufen, wenn sich Tests in einem separaten Verzeichnis befinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!