2009-12-14 5 views
1

Je souhaite effectuer des tests d'interaction dans mon projet de test et tester certains composants basés sur la configuration xml ... Comment puis-je trouver le répertoire de base du projet de test dans du code afin peut créer des chemins par rapport à elle? Je veux avoir un sous-dossier qui contient les fichiers xml de test.Répertoire de base du projet de test Visual Studio

Merci

EDIT:

Iv utilisé Assembly.GetExecutingAssembly() Emplacement - qui donne le dossier à mettre du temps, je courais les essais .. je dois configurer les fichiers XML pour aller avec. les assemblées dans ce répertoire .. comment puis-je faire cela?

Répondre

2
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

Vous obtiendrez le chemin du fichier d'applications, que vous pouvez utiliser pour charger des fichiers XML dans son répertoire.

Si vous parlez strictement du dossier de projet, en supposant qu'il se trouve dans bin \ debug, ajoutez simplement un "...." à la fin de celui-ci.

+0

Iv utilisé Assembly.GetExecutingAssembly() Emplacement - qui donne le dossier à mettre du temps, je courais les essais .. je dois configurer les fichiers XML à partir. avec les assemblées dans ce répertoire .. comment puis-je faire cela? – theringostarrs

+0

Cela ne fonctionnera que pour les assemblys directement chargés. Les assemblages diffusés à partir d'emplacements distants renvoient un URI et non un chemin de fichier. Juste FYI. – GrayWizardx

1

Je suppose qu'Application.StartupPath ne fonctionnera pas pour vous non plus?

Peut-être qu'il y a une exigence qui me manque mais y at-il une raison pour laquelle vous ne pouvez pas simplement dire aux tests où placer la sortie?

2

Vous devriez pouvoir utiliser des chemins relatifs à la racine de votre projet; par exemple: doc.Load(@"somedir\my.xml");. La question est: quel cadre de test utilisez-vous? Avec NUnit, la plupart des coureurs de tests (dans l'EDI, comme TestDriven.NET, R #, etc.) utilisent simplement les propriétés de l'élément de projet. Assurez-vous donc que "Copier dans le répertoire de sortie" est "Toujours copier" ou "Copier si plus récent". Pour le coureur MSTest intégré livré avec certains SKU VS, les choses sont différentes; vous pouvez utiliser soit le testrunconfig ou les attributs de votre test-fixture pour lui dire ce qu'il faut déployer. Ce qui est idiot, OMI. Pour testrunconfig, double-cliquez sur le testrunconfig et sélectionnez "Déploiement", puis "Ajouter un fichier ..."; pour les attributs, vous voulez [DeploymentItem] - comme dans:

[TestClass, DeploymentItem(@"foo\bar.xml")] 
public class SomeTestClass { 
    ... 
} 
Questions connexes