J'ai un test qui nécessite qu'un fichier XML soit lu puis analysé. Comment puis-je copier ce fichier dans le dossier de test à chaque fois?
Le fichier XML est défini sur "Copier si plus récent" et un mode de compilation sur "aucun" (car ce n'est pas vraiment une chose compilable)
visual-studio
mstest
Aaron Powell
la source
la source
Il semble que si vous fournissez un fichier TestSettings pour la solution, vous pouvez décocher l'option "Activer le déploiement" et empêcher mstest d'essayer de s'exécuter à partir du
...TestResults\...\out
dossier où il ne copie pas vos fichiers supplémentaires (sauf si vous en faites une option de déploiement) .Ceci est également utile si vous dépendez du fait que les fichiers supplémentaires se trouvent dans une structure de dossiers préservée car les éléments de déploiement semblent tous être copiés directement (à plat) dans le dossier d'exécution temporaire (sortie) si vous utilisez l'option Déploiement, Ajouter un dossier dans les paramètres de test ( Les réponses ci-dessus suggèrent que vous pouvez conserver la structure si vous ajoutez chaque élément comme son propre DeploymentItem).
Pour moi, cela a bien fonctionné en exécutant des tests directement dans Visual Studio (c'est-à-dire que mes fichiers supplémentaires dans leur structure ont été trouvés et utilisés par des tests) car j'avais créé un fichier TestSettings pour une autre raison il y a longtemps (qui a désactivé le déploiement), mais pas lorsque TeamCity a exécuté mstest pour exécuter des tests car je n'avais pas spécifié que le fichier TestSettings devait être utilisé.
Pour créer un fichier TestSettings dans Visual Studio, cliquez avec le bouton droit sur la solution et choisissez Nouvel élément, puis sélectionnez le modèle TestSettings. Pour utiliser le fichier TestSettings à l'invite de commande de mstest.exe, ajoutez l'option
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(ou ajoutez comme option de ligne de commande supplémentaire dans TeamCity avec le chemin approprié)la source
La réponse Preet est utilisée pour déployer des éléments pour un seul test. Si vous souhaitez le faire au niveau de la solution, utilisez les paramètres .testrunconfig .
la source
La meilleure solution pour moi consiste à utiliser des paramètres de test, surtout si plusieurs tests nécessitent les mêmes fichiers de données.
Commencez par créer un fichier de paramètres de test et ajoutez les éléments de déploiement dont vous avez besoin (nom du fichier ou du dossier):
En cours d'exécution dans Visual Studio, utilisez "Sélectionner le fichier de paramètres de test" dans le menu "Test \ Paramètres de test" pour sélectionner de nouveaux paramètres de test
En exécutant mstest, utilisez le paramètre / testsettings pour que mstest utilise vos testsettings.
la source
Vous pouvez définir DeploymentItem dans une classe qui contient une méthode avec l'attribut AssemblyInitialize. Ensuite, vous êtes sûr que les fichiers sont copiés quel que soit le test que vous exécutez.Malheureusement, l'attribut DeploymentItem n'est exécuté que sur les classes qui contiennent des tests que vous exécutez. Donc, si vous avez 10 classes de test qui utilisent le même ensemble de fichiers, vous devez ajouter l'attribut à chacun d'eux.
A également découvert que les modifications des fichiers * .testsettings ne sont pas automatiquement actualisées dans Visual Studio. Par conséquent, après avoir ajouté des fichiers / dossiers dans le déploiement dans les paramètres de test, vous devez rouvrir le fichier de solution, puis exécuter les tests.
la source
Dans Visual Studio 2012, vstest.console.exe (le lanceur de test intégré) s'exécute avec le répertoire de sortie comme chemin d'accès actuel. Cela signifie que vous devez uniquement inclure les éléments dans votre solution avec la propriété "Copier toujours" ou "Copier si plus récent" pour qu'ils soient utilisés par votre test. Vous n'avez pas besoin de l'attribut DeploymentItem pour le cas général. La même chose s'applique lors de l'exécution de vstest.console.exe à partir de la ligne de commande dans votre répertoire de sortie / test.
Dans certains cas, un dossier distinct est utilisé, l'un d'entre eux étant lorsque vous utilisez l'attribut DeploymentItem. Voir ici pour plus d' informations.
la source