Comment faire de l'unité de test dans le dossier bin
J'essaye d'accéder à un fichier dans ma structure de la solution au cours de l'unité de test. Mon projet de test d'unité a la bin\Debug\
que le répertoire de sortie. Donc, j'ai écrit le code en supposant que Path.GetFullPath(".")
dans mon unité de test va me donner ce dossier bin. Mais ce qu'il fait c'est qu'il me donne un emplacement temporaire comme le chemin d'accès.
C:\Users\[username]\AppData\Local\Temp\TestResults\[username]_[machine_name] 2013-05-16 08_31_07\Out
Alors, évidemment, mon test unitaire ne pouvais pas accéder à des fichiers dans ma solution. Si quelqu'un sait comment faire de l'unité de test dans le dossier bin de l'unité de projet de test s'il vous plaît aider.
OriginalL'auteur Geethanga | 2013-05-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en utilisant un .runsettings fichier, et la mise
<DeploymentEnabled>false</DeploymentEnabled>
. Voir la section "Remarques"ici. Cependant, vous ne pouvez pas faire cela si vous êtes en utilisant un .fichier testsettings, et si vous voulez être en mesure d'inspecter tous les fichiers que vos tests de lecture ou d'écriture après l'échec d'une course, vous pourriez ne pas être en mesure de le faire, parce qu'ils pourraient être contaminé par d'autres tests etc.Une autre option est d'utiliser des éléments de déploiement, ce qui peut être fait par le biais de la
DeploymentItemAttribute
ou par le biais de votre .fichier testsettings. L'attribut mécanisme est préféré, et, essentiellement, sur des méthodes d'essai qui vous avez besoin pour déployer les fichiers pour vous de faire les suivants:Où source est soit un chemin relatif à la construction du dossier de sortie, ou un chemin absolu, et cible est soit un chemin relatif à l'endroit où l'exécution des tests à partir de, ou un chemin d'accès absolu. Vous pouvez laisser le paramètre cible, dans ce cas, il assumera une cible de ".", c'est à dire le dossier où les tests sont en cours d'exécution. La documentation pour ce sont ici
Voir la première partie... "<DeploymentEnabled>false</DeploymentEnabled>", et la documentation sur les paramètres d'exécution d'un fichier. Qui va vous permettre de courir dans le dossier bin\Debug.
Merci beaucoup! La désactivation de DeploymentEnabled dans mon .testsettings et déploiement via [DeploymentItem(TestDataFolder, "TestData")] travaillé.
Cette solution a fonctionné pour moi, mais je ne peut pas persister dans la solution. En gros, si je remets les fichiers et quelqu'un d'autre, il obtient, ils ont besoin de sélectionner manuellement les runsettings fichier. Je veux que ce soit persistante pour cette solution.
OriginalL'auteur guysherman
Une autre option qui peut vous convenir est à l'aide de NUnit au lieu de MSTest.
Dans ce cas, les tests sont exécutés dans le répertoire bin\debug
Je vous suggère de créer une solution de l'échantillon (comme je l'ai fait) pour le prouver (je serais heureux de vous envoyer le code source si vous avez besoin d'aide). J'ai couru 2 versions - 1 dans mstest et 1 dans nunit. Lors de l'exécution dans nunit c'est ce que je suis - "D:\work\rampup\nunit-test\NunitTest\NunitTest\bin\Debug" alors que dans mstest c'est ce que je suis - "C:\Users\ron\AppData\Local\Temp\TestResults\ron_RON-PC 2013-07-29 16_38_27\"
qui ressemble à un bon spot! Faudra essayer peut-être la maison de mon environnement de dev n'est pas correctement configuré peut-être, je ne sais pas.
Vous êtes tous les deux à droite. Si vous utilisez NUnit console pour exécuter les tests, il va utiliser le dossier par défaut. Si vous exécutez vos tests NUnit VS l'Explorateur de tests, il va utiliser un autre emplacement.
OriginalL'auteur Ron Sher
C'est une mise à jour pour tous ceux qui pourraient être en cours d'exécution dans ce problème à l'aide de Visual Studio 2015. Conforme à @guysherman, j'ai une Solution Éléments de dossier dans le fichier de Solution dans mon explorateur de solutions, et il devrait en être un .fichier testrunconfig. Si vous l'ouvrez à l'aide de Visual Studios, Activer le Déploiement est une case à cocher en haut que vous pouvez décocher.
J'ai eu le même problème, où mes tests ont été déploiement .dll à une TestRun dossier à chaque fois que j'ai couru les tests unitaires, mais le .fichier de configuration qui a été inclus avec l'exécutable fait référence à une autre commune.config, qui n'a pas déployer avec tout le reste, je n'ai donc jamais connecté à mon serveur SQL parce que cela a été spécifié dans la commune.config. Décochant la case Activer l'option de Déploiement couru mes tests à droite à partir de la corbeille le dossier spécifié dans le projet.
OriginalL'auteur Michael Sheely
Nous avons rencontré ce problème avec VS 2017, mais notre problème est avec log4net.config n'obtenant pas copié sur les résultats du test de dossier (même si la Copie était Toujours vrai).
Notre solution a été de supprimer les
LocalTestRun.testrunconfig
fichier à partir de laSolution Items
dossier (directement dans la solution). Quand on n'a que ça a commencé à l'aide de l' \bin\debug\ dossier comme il se doit et trouvé notre log4net.fichier de configuration.OriginalL'auteur goku_da_master
Il semble comme un Visual Studio bug. Voici ce que j'ai fait pour le réparer (qui comme par magie a fonctionné!):
local.testsettings
fichier.local.testsettings
fichier de retour à nouveau.OriginalL'auteur Arin Ghazarian
Si vous essayez d'accéder à des fichiers ou des ressources que vous êtes en supposant que sont dans le dossier par défaut, vous pouvez essayer de leur donner explicitement le répertoire de l'emplacement d'assemblage. Un exemple:
Domaine d'application.CurrentDomain.BaseDirectory résout généralement à l'assemblage de l'emplacement, qui est ce que vous envisagez.
OriginalL'auteur Jahmic