Chemin d’access pour tester les fichiers de données pour les tests unitaires

J’utilise actuellement la suite Microsoft Unit Test standard dans VS 2008. ReSharper 4.5 est également installé. Mes tests unitaires reposent sur une méthode TestInitialize qui pré-charge un fichier de données. Le chemin d’access à ce fichier de données de test diffère selon que j’exécute le test unitaire depuis VS 2008 à l’aide de la commande standard Ctrl-R + Ctrl-T par rapport à la commande d’exécution du test unitaire Resharper.

Comment ma méthode TestInitialize peut-elle connaître le chemin correct vers les fichiers de données de test unitaire?

Mettre à jour:

Les données de test sont assez importantes pour que je ne veuille pas les insérer dans une chaîne. Préférez donc les conserver en tant que fichiers externes. La structure de fichier de mon projet de test est celle du projet de test d’unité standard créé avec une application MVC. Sous la racine du projet de test, un nouveau dossier a été créé appelé «Données de test». C’est ce dossier auquel j’aimerais accéder indépendamment du testeur.

Vous dites que l’emplacement du fichier de test sera différent en fonction du testeur. Je suppose donc qu’il est inclus dans le projet et copié avec les DLL.

ssortingng path = AppDomain.CurrentDomain.BaseDirectory; 

Cela vous donnera le dossier où vous exécutez le test.

[Modifier]

Dans Visual Studio.

Resharper -> Options -> Outils -> Tests unitaires -> Exécuter les résultats à partir de: Dossier spécifié (ou modifier le dossier de sortie du projet de votre projet de test)

Où vous pouvez spécifier le dossier de vos données de test ou par rapport au dossier spécifié.

(réponse originale mise à jour pour accepter également les chemins de sortie du projet multi-cible de base .net)

Il suppose que vos fichiers de données de test se trouvent dans un dossier que vous transmettez en tant que paramètre “testDataFolder” dans un dossier racine “Test_Data”:

 public static ssortingng GetTestDataFolder(ssortingng testDataFolder) { ssortingng startupPath = ApplicationEnvironment.ApplicationBasePath; var pathItems = startupPath.Split(Path.DirectorySeparatorChar); var pos = pathItems.Reverse().ToList().FindIndex(x => ssortingng.Equals("bin", x)); ssortingng projectPath = Ssortingng.Join(Path.DirectorySeparatorChar.ToSsortingng(), pathItems.Take(pathItems.Length - pos - 1)); return Path.Combine(projectPath, "Test_Data", testDataFolder); } 

Ne pourriez-vous pas créer les données de test à partir de zéro dans la routine d’initialisation de votre suite de tests? Cela ne dépendrait pas de son emplacement à un endroit précis et il serait à l’abri de toute manipulation accidentelle.