Comment puis-je obtenir “Copier dans le Répertoire de Sortie” pour travailler avec des Tests Unitaires?
Quand je construire un projet de tests unitaires avant l'exécution des tests le test de sortie est copié dans un dossier TestResults et puis les tests sont exécutés. La question que je vais avoir, c'est que pas tous les fichiers dans le Debug/bin sont copiés sur les résultats du test du projet.
Comment puis-je obtenir un fichier est copié dans le Debug/bin pour également être copiés sur les résultats du test de dossier?
Vous devez vous connecter pour publier un commentaire.
Le standard de la façon de le faire est par la spécification de la les éléments de déploiement dans le
.testrunconfig
fichier, qui peut être consulté via le Modifier Essai Configurations élément dans Visual Studio Test menu ou dans le Solution Éléments dossier.Vous pouvez spécifier le déploiement de l'attribut comme un exemple illustré ci-dessous; Aussi, vous devez définir le "Contenu" & "Copier si plus récent de la propriété" ( il n'y a pas de documentation sur les paramètres plus tard, mais que vous avez ceux de la faire fonctionner.
J'ai dû tourner sur "Activer le Déploiement" en vertu de
Test -> Edit Test Settings -> Local -> Deployment
pour la[DeploymentItem]
attribut de travail.Tous les trois réponses sont correctes, en fonction de vos besoins.
L'ajout de fichiers à déployer dans le .testrunconfig (.testsettings dans VS2010) va copier tous ces fichiers pour chaque test, le dossier de sortie, même sans rapport avec les tests s'exécutent dans l'isolement. Si vous exécutez un test, toutes les données de test des fichiers répertoriés dans la section de déploiement de .testssettings sera copié à l'épreuve de dossier de sortie.
Dans mes tests, j'ai besoin de copier attendue d'un fichier XML à l'épreuve de dossier de sortie pour comparer avec le test de sortie XML. J'utilise le DeploymentItem attribut de copier seulement le fichier XML liés au test(s) en cours d'exécution. Dans VS2010 j'ai eu pour activer le déploiement dans le .fichier testsettings (mais pas ajouter les chemins d'accès), puis de référence le chemin de fichier XML par rapport à la Projettest dans la DeploymentItem.
Espère que cette aide.
J'ai eu un problème similaire, mais le mien a eu à faire avec pointant vers le TraceAndTestImpact.testsettings fichier au lieu de le Local.fichier testsettings. Vous pouvez passer de l'une à l'autre en vertu de l'Essai, Sélectionnez Active Tester les Paramètres du menu.
Les ouvrages suivants, en VS2012 pour des projets de test inclus dans plusieurs solutions sans l'aide d'un fichier testsettings:
1) Organiser les fichiers et dossiers que vous souhaitez déployer dans un dossier dans le projet de test répertoire.
2) Dans les propriétés du projet, créer un post étape de génération
$(ProjectDir)
et$(TargetDir)
sont des macros qui seront interprétées par VS et devraient être inclus en tant que tel.<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 sera déployé et devrait être nommé en sorte qu'il soit unique lorsque plusieurs projets de test sont déployées sur le même répertoire, par exemple<Project_Name>_TestInputs
.Fichiers de Test dans des emplacements partagés devraient également être copié dans le répertoire cible de déploiement du dossier à la limite de tester les interactions. Fournir le chemin de la source par rapport à la
$(ProjectDir)
macro. Par exemple"$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.3) Ajouter un
[DeploymentItem(source, destination)]
propriété soit de chaque méthode de test qui utilise un fichier de déploiement (meilleure pratique) ou à la classe de test (plus facile pratique pour les paresseux ou trop pressés, et de la façon la plus simple de mettre à jour un projet précédemment utilisé des chemins relatifs ou un fichier testsettings).Sur une méthode de test,
source
est le chemin vers le fichier ou le répertoire utilisé dans la méthode d'essai par rapport à la cible répertoire créé par lexcopy
etdestination
est le chemin du répertoire dans lequel il sera créé par rapport au répertoire de déploiement. Alors que les tests s'exécutent uniforme, ni dans le répertoire cible ou un répertoire de déploiement. Le chemin de destination doit être le même que le chemin de la source sans un fichier de référence. Exemple:[DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. LeDeploymentItem
devrait figurer sur chaque méthode qui utilise ce fichier ou d'un répertoire.Sur une classe,
source
etdestination
sont à la fois le nom du dossier créé dans le répertoire cible par lexcopy
; cela permettra de copier l'intégralité du dossier dans le répertoire de déploiement lors de tout test dans la classe est exécuté. Exemple:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) Dans les méthodes de test, vous pouvez maintenant accéder à des fichiers et des répertoires avec confiance qu'ils seront dans le répertoire de travail indépendamment de l'endroit où Visual Studio a décidé de le mettre dans la journée, par exemple
File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.Voudrais juste améliorer la accepté de répondre en mentionnant une façon de l'obtenir pour déployer spécifiquement pour les dll, plutôt que la méthode normale d'utilisation de données ou de config etc, pour les circonstances où CopyLocal ne fonctionne pas:
Essayer le Post-événement de construction de la ligne de commande à partir de Visual Studio (si vous utilisez cette IDE).
Dans Visual Studio 2012, vous n'avez pas besoin d'un DeploymentItem attribut pour le cas simple. Voir ma réponse ici
Accepté la réponse est correcte et la plupart des autres réponses. Cependant, au fil des ans, j'ai trouvé que le Deploment système de Visual Studio Tests Unitaires à l'aide DeploymentAttribtue et Copie de Sortie à être lourd si vous avez un grand nombre de fichiers de données. J'ai constaté que de garder les fichiers à leur emplacement d'origine a mieux fonctionné.
Plus de détails dans mon autre réponse ici.
https://stackoverflow.com/a/53004985/2989655
Espère que cette aide.