Heim > Artikel > Backend-Entwicklung > Wie erreicht man eine Testabdeckung für Code, der von Tests in Go getrennt ist?
Testabdeckung für von Tests getrennten Code
Trotz des Vorteils, Testdateien für eine sauberere Codebasis separat zu organisieren und Tests auf öffentliche API-Interaktionen zu beschränken , stellt es eine Herausforderung dar, Abdeckung für das zu testende Zielpaket (in diesem Fall api_client) zu erhalten.
Um dieses Problem zu beheben, können wir beim Ausführen von Tests das Flag -coverpkg zusammen mit dem Paketnamen nutzen:
go test -cover -coverpkg "api_client" "api_client_tests"
Dieser Befehl führt die Tests mit aktivierter Abdeckung für das api_client-Paket aus.
Die Trennung von Testdateien und Codedateien ist zwar zulässig, es ist jedoch wichtig zu beachten, dass dies vom Standardansatz von Go abweicht. Dies bedeutet, dass Tests außerhalb des Pakets nicht auf paketprivate Variablen oder Funktionen zugreifen können, selbst wenn sie sich in separaten Verzeichnissen befinden.
Um Black-Box-Tests durchzusetzen, bei denen Tests nur auf öffentliche API-Methoden zugreifen sollten, Sie können Tests weiterhin in separaten Paketen aufbewahren, ohne die Dateien physisch zu verschieben. Zum Beispiel:
<code class="go">// api_client.go package api_client // Private variable not accessible outside package var privateVar = 10 func PublicMethod() {}</code>
<code class="go">// api_client_test.go package api_client_tests import ( "testing" "api_client" // Import api_client package ) func TestPublicMethod(t *testing.T) { api_client.PublicMethod() }</code>
In diesem Beispiel sind die privateVar- und Methodenfunktion von api_client.go für die Testdatei nicht zugänglich, wodurch sichergestellt wird, dass Tests nur über die öffentliche API interagieren.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine Testabdeckung für Code, der von Tests in Go getrennt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!