Ce qui suit fonctionne dans VS2012 pour les projets de test inclus dans plusieurs solutions sans utiliser de fichier testsettings:
1) Organisez les fichiers et dossiers que vous souhaitez déployer dans un dossier du répertoire du projet de test.
2) Dans les propriétés du projet, créez une étape de post-construction
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
et $(TargetDir)
sont des macros qui seront interprétées par VS et doivent être incluses comme telles.
<Project_Folder_Name>
est le nom du dossier créé à l'étape 1.
<Deployment_Folder_Name>
est le nom du dossier dans lequel les fichiers de test seront déployés et doit être nommé de manière à ce qu'il soit unique lorsque plusieurs projets de test sont déployés dans le même répertoire, par exemple <Project_Name>_TestInputs
.
Les fichiers de test dans des emplacements partagés doivent également être copiés dans le dossier de déploiement du répertoire cible pour limiter les interactions de test. Fournissez le chemin source par rapport à la $(ProjectDir)
macro. Par exemple "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Ajoutez une [DeploymentItem(source, destination)]
propriété à chaque méthode de test qui utilise un fichier de déploiement (meilleure pratique) ou à la classe de test (pratique plus facile pour les paresseux ou pressés, et le moyen le plus simple de mettre à jour un projet les chemins relatifs précédemment utilisés ou un fichier de paramètres de test ).
Dans une méthode de test, source
est le chemin du fichier ou du répertoire utilisé dans la méthode de test par rapport au répertoire cible créé par le xcopy
et destination
est le chemin du répertoire dans lequel il sera créé par rapport au répertoire de déploiement. Pour que les tests s'exécutent de manière cohérente dans le répertoire cible ou dans un répertoire de déploiement. Le chemin de destination doit être le même que le chemin source sans référence de fichier. Exemple: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. Le DeploymentItem
doit être inclus dans chaque méthode qui utilise ce fichier ou ce répertoire.
Sur une classe, source
et destination
sont à la fois le nom du dossier créé dans le répertoire cible par le xcopy
; cela copiera le dossier entier dans le répertoire de déploiement lorsqu'un test de la classe est exécuté. Exemple:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) Dans les méthodes de test, vous pouvez désormais accéder aux fichiers et aux répertoires en toute confiance, ils seront dans le répertoire de travail quel que soit l'endroit où Visual Studio a décidé de le placer ce jour-là, par exemple File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.