Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhalte ich genaue Abdeckungsstatistiken für externe Tests in Go?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 16:02:29178Durchsuche

 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

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"

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>

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>

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!

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