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

Mary-Kate Olsen
Freigeben: 2024-10-29 20:56:29
Original
434 Leute haben es durchsucht

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"
Nach dem Login kopieren

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>
Nach dem Login kopieren
<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage