107 votes

MSTest copie du fichier au dossier exécution de test

J’ai un test qui nécessite un fichier XML à lire et puis analysée. Comment puis-je avoir ce fichier copié dans le dossier tests chaque fois ?

Le fichier XML a la valeur « Copier si plus récent » et un mode de compilation « None » (puisqu’il n’est pas vraiment une chose compilation-able)

129voto

Preet Sangha Points 39414

utiliser un `` attribut

25voto

TamW Points 211

Il semble que si vous fournissez un fichier TestSettings pour la Solution, alors vous pouvez décocher la case "Activer le déploiement" et arrêter mstest d'essayer de l'exécuter à partir de l' ...TestResults\...\out le dossier où il n'est pas à la copie de vos fichiers supplémentaires (sauf si vous leur faites une option de déploiement).

Ceci est également utile si vous comptez sur les fichiers supplémentaires sont dans un dossier conservé la structure, car les éléments de Déploiement semblent tous être copié directement (à plat) dans le passage provisoire dossier (out) si vous utilisez le Déploiement, l'Ajout d'une option Dossier dans le TestSettings (réponses ci-dessus suggèrent que vous pouvez garder la structure, si vous ajoutez chaque point comme son propre DeploymentItem).

Pour moi il a bien fonctionné à l'exécution de tests directement dans Visual Studio (c'est à dire mes fichiers supplémentaires dans leur structure ont été trouvés et utilisés par les tests) parce que j'avais créé un fichier TestSettings pour une autre raison il y a longtemps (qui a Activer le déploiement non cochée), mais pas lors de TeamCity couru mstest pour exécuter des tests parce que je n'avais pas précisé que le fichier TestSettings doit être utilisé.

Pour créer un fichier TestSettings dans Visual Studio, cliquez du bouton droit sur la Solution et choisir un Nouvel Élément, puis sélectionnez le TestSettings modèle. Pour utiliser le fichier TestSettings à l'invite de commande de mstest.exe ajout de l'option, /testsettings:C:\Src\mySolution\myProject\local.testsettings (ou ajouter un supplément option de ligne de commande dans TeamCity avec chemin d'accès approprié)

8voto

Eric Bole-Feysot Points 558

La réponse de Preet est utilisée pour déployer des éléments pour un seul test. Si vous voulez faire au niveau de la solution, utilisez les paramètres .testrunconfig.

2voto

Sielu Points 61

Vous pouvez définir DeploymentItem dans une classe qui contient une méthode avec AssemblyInitialize attribut. Ensuite, vous êtes sûr que les fichiers sont copiés indépendamment de test que vous exécutez.

Malheureusement DeploymentItem attribut est exécutée uniquement sur les classes qui contiennent des tests que vous êtes en cours d'exécution. Donc, si vous avez 10 classes de test qui utilisent le même ensemble de fichiers, vous devez ajouter l'attribut à tous.

Également constaté que les changements dans *.testsettings fichiers ne sont pas automatiquement mis à jour dans Visual Studio. Par conséquent, après l'ajout de fichiers / dossiers dans le déploiement dans testsettings, il faut rouvrir le fichier de solution et ensuite exécuter les tests.

2voto

acarlon Points 4636

Dans Visual Studio 2012, vstest.console.exe (built-in test runner) fonctionne avec la sortie dir que le chemin d'accès actuel. Cela signifie que vous avez seulement besoin d'inclure ces éléments dans votre solution avec le "Copy" ou " Copier si plus récent de propriété pour être utilisés par votre test. Vous n'avez pas besoin de la DeploymentItem attribut pour le cas général. La même règle s'applique lors de l'exécution de vstest.console.exe à partir de la ligne de commande à l'intérieur de votre répertoire de test.

Il y a certains cas où un dossier distinct est utilisé, l'un d'eux étant que lorsque vous utilisez le DeploymentItem attribut. Voir ici pour plus d'informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X