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?

Comment puis-je déterminer de manière fiable le chemin du répertoire de mon assemblage de test dans les tests unitaires?

Barbara Streisand
Barbara Streisandoriginal
2025-01-31 22:46:09645parcourir

How Can I Reliably Determine the Directory Path of My Test Assembly in Unit Tests?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn