Wie erhalte ich genaue Abdeckungsstatistiken für externe Tests in Go?

Patricia Arquette
Freigeben: 2024-10-27 16:02:29
Original
185 Leute haben es durchsucht

 How to Get Accurate Coverage Stats for External Tests in Go?

Abdeckungsstatistiken für externe Tests

In Go wird empfohlen, die Tests im selben Paket zu belassen wie den Code, den sie testen. Wenn Ihre Codebasis jedoch aus zahlreichen Testdateien besteht, bevorzugen Sie möglicherweise eine übersichtlichere Organisation, indem Sie diese Tests in ein anderes Paket aufteilen. Dieser Ansatz beschränkt die Tests auf den Zugriff auf die öffentliche API des Pakets und fördert so eine bessere Organisation und Kapselung.

Angesichts der folgenden Struktur:

api_client:
    Client.go
    ArtistService.go

api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go
Nach dem Login kopieren

Ausführen von go test bandsintown-api/api_client_tests -cover meldet 100 % Abdeckung, aber diese Abdeckung bezieht sich nur auf UtilityFunction.go.

Lösung:

Um Abdeckungsstatistiken für das getestete api_client-Paket zu erhalten, ohne die Pakete zusammenzuführen:

go test -cover -coverpkg "api_client" "api_client_tests"
Nach dem Login kopieren

Es ist jedoch zu beachten, dass die Aufteilung von Code- und Testdateien in verschiedene Verzeichnisse im Widerspruch zur Go-Konvention steht. Wenn Black-Box-Tests gewünscht sind, bei denen auf nichts außerhalb des Pakets zugegriffen werden kann, sollten Sie die Tests in ein neues Paket verschieben, ohne die Dateien neu zu organisieren:

api_client.go:

<code class="go">package api_client

// Only accessible within the package
var privateVar = 10

func Method() {}</code>
Nach dem Login kopieren

api_client_test.go:

<code class="go">package api_client_tests

import "testing"

func TestClient(t *testing.T) {
    Method() // Still accessible from another package
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erhalte ich genaue Abdeckungsstatistiken für externe Tests in Go?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!