Wie kann ich Testcode aus importierten Paketen in Go mit nicht exportierten Funktionen wiederverwenden?

Patricia Arquette
Freigeben: 2024-11-04 03:48:29
Original
805 Leute haben es durchsucht

How to Reuse Test Code from Imported Packages in Go with Unexported Functions?

Wiederverwendung von Testcode in importierten Paketen in Go

In Ihrer Verzeichnisstruktur haben Sie in pkg1_test.go eine Testdienstprogrammfunktion, die Sie wünschen zur Verwendung in main_test.go, das pkg1 importiert. Die Funktion in pkg1_test.go verwendet jedoch eine nicht exportierte Funktion in pkg1, wodurch sie außerhalb des Pakets nicht verfügbar ist.

Erwägen Sie die folgenden Ansätze:

Verschieben der Funktion nach pkg1.go

Während das Verschieben der Funktion nach pkg1.go sie in main_test.go zugänglich machen würde, könnte dies dazu führen, dass die Funktion in die von go build generierte Binärdatei aufgenommen wird. Dies ist für reine Testfunktionen unerwünscht.

Erstellen eines separaten Test-Dienstprogrammpakets

Verschieben der Funktion in ein separates Test-Dienstprogrammpaket und manuelles Importieren in *_test. go-Dateien scheinen ideal zu sein. Die Funktion erfordert jedoch weiterhin Zugriff auf interne Methoden in pkg1, die möglicherweise nicht exportiert werden.

Ein hybrider Ansatz

Für Ihr spezifisches Szenario bietet ein hybrider Ansatz a Lösung:

  1. Verschieben Sie die Test-Utility-Funktion von pkg1_test.go in ein neues Paket, nennen wir es testutils.
  2. Importieren Sie testutils sowohl in main_test.go als auch in pkg1_test.go.
  3. Fügen Sie in pkg1_test.go eine Funktion wie diese hinzu:

    <code class="go">func getPrivateData() []byte {
        // Code to get internal data from pkg1
    }</code>
    Nach dem Login kopieren
  4. Laden Sie in testutils die privaten Daten von getPrivateData in pkg1_test.go und verwenden Sie sie, um die erforderlichen Schritte auszuführen Tests.

Dieser Ansatz ermöglicht es Ihnen, Ihre Testdienstprogrammfunktion wiederzuverwenden und sie gleichzeitig vom Produktionscode getrennt zu halten und das Problem nicht exportierter Funktionen zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie kann ich Testcode aus importierten Paketen in Go mit nicht exportierten Funktionen wiederverwenden?. 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!