Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man eine Testabdeckung für Code, der von Tests in Go getrennt ist?

Wie erreicht man eine Testabdeckung für Code, der von Tests in Go getrennt ist?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 20:56:29433Durchsuche

How to Achieve Test Coverage for Code Separated from Tests in Go?

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!

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