Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Abdeckung für ein Paket mit separaten Testdateien in Go messen?

Wie kann ich die Abdeckung für ein Paket mit separaten Testdateien in Go messen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 20:18:30754Durchsuche

 How Can I Measure Coverage for a Package with Separated Test Files in Go?

Testen der Paketabdeckung mit getrennten Testdateien

Beim Organisieren einer Codebasis mit zahlreichen Testdateien kann es vorteilhaft sein, Tests von den tatsächlichen zu trennen Codebasis für Klarheit und Einhaltung von Best Practices. In solchen Szenarien befinden sich die Testdateien möglicherweise in einem anderen Paket als der zu testende Code.

Eine potenzielle Herausforderung entsteht beim Abrufen von Abdeckungsstatistiken für das tatsächlich zu testende Paket. Standardmäßig bieten Tests nur Abdeckung für das Paket, in dem sie sich befinden. Dieses Problem ist auf den Ansatz von Go zurückzuführen, der vorschreibt, dass Code- und Testdateien innerhalb desselben Pakets koexistieren sollten.

Lösung

Glücklicherweise bietet Go eine Lösung für dieses Dilemma:

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

Durch Angabe des Flags „-coverpkg“ können Sie Go anweisen, die Abdeckung für das angegebene Paket („api_client“ in diesem Fall) zu messen ), während Tests aus einem separaten Paket („api_client_tests“) ausgeführt werden. Dadurch können Sie die Abdeckung Ihres API-Client-Pakets genau ermitteln, ohne es mit den Testdateien konsolidieren zu müssen.

Alternativer Ansatz

Dabei können getrennte Testpakete verwendet werden Obwohl sie organisatorische Vorteile bieten, ist es erwähnenswert, dass dieser Ansatz von der herkömmlichen Go-Methode zum Organisieren von Code und Tests abweicht. Wenn Black-Box-Tests Ihr Hauptziel sind, bei dem nur öffentliche Paket-APIs für Tests zugänglich sind, steht eine alternative Methode zur Verfügung:

  1. Behalten Sie die Testdateien im selben Paket wie der Code.
  2. Verwenden Sie den Sichtbarkeitsmodifikator „intern“, um den Zugriff auf paketprivate Methoden und Variablen einzuschränken und sicherzustellen, dass nur die öffentliche API des Pakets Tests ausgesetzt ist.

Das obige ist der detaillierte Inhalt vonWie kann ich die Abdeckung für ein Paket mit separaten Testdateien in Go messen?. 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