Maison > Article > développement back-end > Comment exécuter des tests unitaires Go avec des répertoires de travail personnalisés ?
Golang : tests unitaires avec des répertoires de travail personnalisés
Lors de l'écriture de tests unitaires dans Go, il est courant de devoir charger des fichiers de configuration ou d'autres ressources à partir d'un répertoire spécifique. Par défaut, les tests Go héritent du répertoire de travail du processus qui les a invoqués, qui peut être différent du répertoire où se trouvent les fichiers de test. Cela peut entraîner des erreurs si les tests reposent sur des fichiers qui ne sont pas disponibles dans le répertoire de travail actuel.
Solution :
Une solution consiste à modifier le répertoire de travail avant exécuter les tests. Cela peut être fait à l'aide de la fonction os.Chdir pour modifier le répertoire de travail actuel vers l'emplacement souhaité.
Voici un exemple :
<code class="go">import ( "os" "testing" ) func TestWithWorkingDirectory(t *testing.T) { os.Chdir("path/to/custom/working/directory") // Run tests here }</code>
Une autre approche consiste à utiliser la fonction Caller pour obtenir le chemin d'accès au fichier source de test actuel. Cela peut être utilisé pour déterminer le répertoire parent du fichier de test, qui est probablement l'endroit où se trouvent les fichiers de configuration.
Voici un exemple utilisant 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>
Notez que le chemin du fichier. La fonction Dir est utilisée pour obtenir le répertoire parent du fichier de test. Cela suppose que les fichiers de configuration se trouvent dans le répertoire parent. Si ce n'est pas le cas, vous pouvez modifier le code pour naviguer vers le répertoire approprié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!