MSTest copier le fichier dans le dossier de série de tests
J'ai un test qui nécessite un fichier XML à lire et puis analysé. Comment puis-je avoir accès à ce fichier copié dans le dossier de série de tests à chaque fois?
Le fichier XML est réglé sur "Copier si plus récent" et un mode compilation de "none" (puisqu'il n'est pas vraiment une compilation en mesure chose)
Vous devez vous connecter pour publier un commentaire.
utiliser un
DeploymentItem
l'attributIl 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 la
...TestResults\...\out
dossier où il n'est pas copier vos fichiers supplémentaires (sauf si vous leur faites une option de déploiement).C'est aussi 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-droit sur le Solution et choisissez la commande Nouveau de l'É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é)La Preet réponse est utilisé pour déployer les éléments pour un seul test. Si vous voulez le faire au niveau de la solution, utiliser le .testrunconfig paramètres.
Meilleure solution pour moi, c'est à l'aide de testsettings, surtout si plusieurs tests de besoin, les mêmes fichiers de données.
D'abord créer un fichier testsettings, et ajouter le déploiement des éléments dont vous avez besoin (nom de fichier ou dossier):
Cours d'exécution dans visual studio, utilisez "sélectionner les Paramètres de Test de Fichier" à partir de "Test\Test" Paramètres du menu pour sélectionner de nouveaux testsettings
De course mstest, utilisez le /testsettings paramètre d'avoir mstest utiliser votre testsettings.
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.
Dans Visual Studio 2012, vstest.console.exe (le haut-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.