Maison >développement back-end >C++ >Comment puis-je déterminer de manière fiable le chemin du répertoire de mon assemblage de test dans les tests unitaires?
Accès aux fichiers dans les tests unitaires: une méthode fiable pour déterminer le répertoire de l'assemblage de test
Les tests unitaires nécessitent souvent l'accès aux fichiers par rapport à l'assemblage de test. Cependant, la localisation du répertoire de l'assemblage peut être délicate en raison de variations dans les environnements de test (par exemple, les coureurs de test, les répertoires temporaires). Ce guide fournit une solution robuste.
Le défi de trouver le répertoire d'assemblage
L'objectif est d'obtenir le chemin du répertoire de l'assemblage de courant, à l'exclusion du nom de fichier. Les approches courantes échouent souvent:
Environment.CurrentDirectory
: Cela renvoie le répertoire de travail actuel, qui pourrait différer de l'emplacement de l'assembly. Par exemple, dans certains coureurs de test, il pointe vers le répertoire du coureur, pas le projet de test. Assembly.GetAssembly(typeof(AssemblyType)).Location
et Assembly.GetExecutingAssembly().Location
: Ceux-ci fournissent le chemin d'assemblage complet y compris le nom de fichier, pas seulement le répertoire. La solution: levier Assembly.CodeBase
La clé utilise Assembly.CodeBase
. Cette propriété renvoie le chemin de l'assemblage en tant qu'URI. En utilisant UriBuilder.UnescapeDataString
et Path.GetDirectoryName
, nous pouvons extraire de manière fiable le chemin du répertoire:
<code class="language-csharp">public static string GetAssemblyDirectory() { string codeBase = Assembly.GetExecutingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); return Path.GetDirectoryName(path); }</code>
Cette méthode renvoie systématiquement le chemin du répertoire correct, quel que soit l'environnement de test, garantissant un accès fiable à des fichiers au sein de vos tests unitaires.
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!