Golang: Unit-Tests mit benutzerdefinierten Arbeitsverzeichnissen
Beim Schreiben von Unit-Tests in Go ist es häufig erforderlich, Konfigurationsdateien oder andere Ressourcen zu laden aus einem bestimmten Verzeichnis. Standardmäßig erben Go-Tests das Arbeitsverzeichnis des Prozesses, der sie aufgerufen hat, das möglicherweise nicht mit dem Verzeichnis übereinstimmt, in dem sich die Testdateien befinden. Dies kann zu Fehlern führen, wenn die Tests auf Dateien basieren, die im aktuellen Arbeitsverzeichnis nicht verfügbar sind.
Lösung:
Eine Lösung besteht darin, das Arbeitsverzeichnis vorher zu ändern die Tests durchführen. Dies kann mithilfe der Funktion os.Chdir erfolgen, um das aktuelle Arbeitsverzeichnis an den gewünschten Speicherort zu ändern.
Hier ein Beispiel:
<code class="go">import ( "os" "testing" ) func TestWithWorkingDirectory(t *testing.T) { os.Chdir("path/to/custom/working/directory") // Run tests here }</code>
Ein anderer Ansatz besteht darin, die Caller-Funktion zum Abrufen zu verwenden Der Pfad zur aktuellen Testquelldatei. Dies kann verwendet werden, um das übergeordnete Verzeichnis der Testdatei zu bestimmen, in dem sich wahrscheinlich die Konfigurationsdateien befinden.
Hier ist ein Beispiel mit Caller:
<code class="go">package sample import ( "testing" "runtime" "fmt" ) func TestGetFilename(t *testing.T) { _, filename, _, _ := runtime.Caller(0) parentDir := filepath.Dir(filepath.Dir(filename)) os.Chdir(parentDir) // Run tests here }</code>
Beachten Sie den Dateipfad. Die Dir-Funktion wird verwendet, um das übergeordnete Verzeichnis der Testdatei abzurufen. Dies setzt voraus, dass sich die Konfigurationsdateien im übergeordneten Verzeichnis befinden. Wenn dies nicht der Fall ist, können Sie den Code ändern, um zum entsprechenden Verzeichnis zu navigieren.
Das obige ist der detaillierte Inhalt vonWie führe ich Go-Unit-Tests mit benutzerdefinierten Arbeitsverzeichnissen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!