Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Abdeckungsstatistiken für ein Paket abrufen, wenn sich Tests in einem separaten Verzeichnis befinden?

Wie kann ich Abdeckungsstatistiken für ein Paket abrufen, wenn sich Tests in einem separaten Verzeichnis befinden?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 03:08:28884Durchsuche

How Can I Get Coverage Stats for a Package When Tests Are in a Separate Directory?

Abdeckungsstatistiken für Tests in separaten Paketen

Beim Aufteilen von Tests aus Codedateien in verschiedene Pakete wird es schwierig, Abdeckungsstatistiken für zu erhalten Paket im Test. Betrachten Sie die folgende Verzeichnisstruktur:

api_client:
    Client.go
    ArtistService.go
    ...
api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go
    ...

Das Ausführen von go test bandsintown-api/api_client_tests -cover bietet nur Abdeckung für die UtilityFunction.go-Datei und lässt das eigentliche api_client-Paket aus.

Lösung:

Um dieses Problem zu beheben, verwenden Sie den folgenden Befehl:

go test -cover -coverpkg "api_client" "api_client_tests"

Mit diesem Befehl können Sie die Tests mit speziell für das api_client-Paket aktivierter Abdeckungsmessung ausführen.

Hinweis zur Paketstruktur:

Es ist jedoch zu beachten, dass die Aufteilung von Codedateien und Tests in verschiedene Verzeichnisse in Go nicht empfohlen wird. Stattdessen wird durch das Beibehalten von Tests innerhalb desselben Pakets sichergestellt, dass sie ordnungsgemäß auf die Interaktion mit der öffentlichen API des Pakets beschränkt sind.

Code-Zugänglichkeit für Black-Box-Tests:

Wenn die Ziel ist es, Black-Box-Tests durchzuführen, bei denen private Variablen und Funktionen auf Paketebene für Tests nicht zugänglich sind. Die folgende Problemumgehung kann verwendet werden:

<code class="go">// api_client.go
package api_client

// will not be accessible outside of the package
var privateVar = 10

func Method() {
}

// api_client_test.go
package api_client_tests

import "testing"
import "api_client"  // import the package **without** renaming it

func TestBlackBox(t *testing.T) {
    api_client.Method()  // call the method from the "api_client" package
}</code>

Dadurch können Tests auf Elemente auf Paketebene zugreifen, ohne das Verzeichnis zu ändern Struktur oder Verletzung der Kapselungsregeln.

Das obige ist der detaillierte Inhalt vonWie kann ich Abdeckungsstatistiken für ein Paket abrufen, wenn sich Tests in einem separaten Verzeichnis befinden?. 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