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

Susan Sarandon
Freigeben: 2024-11-01 03:08:28
Original
881 Leute haben es durchsucht

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

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 Folgendes Befehl:

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

Mit diesem Befehl können Sie die Tests mit aktivierter Abdeckungsmessung speziell für das api_client-Paket 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>
Nach dem Login kopieren

Dies Ermöglicht Tests den Zugriff auf Elemente auf Paketebene, ohne die Verzeichnisstruktur zu ändern oder Kapselungsregeln zu verletzen.

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!

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!