Heim >Backend-Entwicklung >Golang >Wie kann ich Testcode aus importierten Paketen in Go mit nicht exportierten Funktionen wiederverwenden?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-04 03:48:29886Durchsuche

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>
  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!

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