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