98 votes

Problèmes avec l'attribut DeploymentItem

Je suis en train de maintenir un "vieux" système écrit en C#.net, en supprimant certaines fonctionnalités obsolètes et un peu de refactoring. Dieu merci, les gars précédente a écrit quelques tests unitaires (MSTests). Je suis assez à l'aise avec JUnit tests, mais n'ont pas encore beaucoup avec MSTests.

Les méthodes de test ont un DeploymentItem d'attribut, la spécification d'un fichier de texte qui est analysé par la logique métier de la méthode d'essai et un 2e DeploymentItem où tout un chemin a été spécifié contenant un tas de fichiers TIF qui doivent être déployées.

[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
   ...
}

Les tests ont travaillé avant, mais maintenant, j'ai dû changer le nom de la banque de fichiers contenus dans le dossier \files\tif répertoire. Selon une règle, la banque de noms de fichiers doivent correspondre à un certain modèle est également vérifié par l' ExistsTifTest()méthode. Maintenant, j'ai dû changer les noms des fichiers afin de les adapter aux nouvelles exigences et soudain le fit fichiers ne peuvent plus être déployé comme avant.

Quelqu'un peut-il me donner un indice pourquoi ce qui se passe ou ce qui peut être la cause? La même chose se produit également si j'ajoute un nouveau fichier texte à dire "my2ndTest.txt" à côté de la "valid_entries.txt" dans le dossier \files\valide\ répertoire avec la fonction DeploymentItem attribut sur la méthode de test. Le fichier n'a pas déployé?

J'ai eu les images maintenant déployé par définir le chemin d'accès de déploiement directement dans le testrunconfig, mais je voudrais comprendre pourquoi ces choses se produisent, ou pourquoi par exemple mon nouveau fichier "my2ndTest.txt" n'a pas déployé pendant que les autres font.

Merci beaucoup.

117voto

Martin Peck Points 8078

DeploymentItem est un peu le bazar.

Chaque fichier dans votre solution aura un "Copier dans le Dossier de Sortie" dans VS.NET. Vous avez besoin d'être "Copy" (ou similaire) afin d'obtenir les fichiers dans le dossier de sortie.

Vérifiez que vous avez eu ce set pour les nouveaux fichiers. Si vous n'avez pas cette série alors les fichiers ne sont pas copiés dans le dossier de sortie, et alors ils ne peuvent pas être déployées à partir de la sortie dans le dossier où MSTest t-il des trucs.

Personnellement, si j'ai des fichiers que j'ai besoin pour mon unité de tests, j'ai trouvé que l'incorporation de ces fichiers en tant que ressources dans une assemblée, et ayant de l'assemblée "décompresser" lui-même pendant la phase de tests est plus prévisible façon de faire les choses. YMMV.

remarque: Ces commentaires sont basés sur mon expérience avec VS2010. Commentaires à ma réponse dirais que ce n'est pas de problème avec VS2012. Je maintiens par les commentaires à l'aide de ressources intégrées implique moins de "magie" et, pour moi, fait de la "organiser" stade de mes tests unitaires beaucoup plus explicite.

77voto

Ivan Muzzolini Points 636

Dans VS2010, l'option "Activer le déploiement" était décochée dans mes Local.testsettings et l'attribut DeploymentItem ne fonctionnait pas. Je l'ai vérifié et tout a bien fonctionné. J'espère que ça aide!

20voto

Murari Kumar Points 61

J'ai également rencontré des problèmes similaires, mais je l'ai trouvé facile solution en 3 étapes pour ceci:

En supposant que votre structure de dossier ressemble à ceci: SolutionFolder\ TestProjectFolder\ SubFolder\

  1. Aller à "des Solutions d'Articles/Local.testsettings" > "Déploiement" > cochez la Case "Activer le Déploiement"
  2. Si vous utilisez VS2010, assurez-vous que tous les fichiers que vous souhaitez déployer ont leurs "Copier dans le Dossier de Sortie" propriété est définie sur "Copy" ou "Copier si plus Récent"
  3. Attribut de votre TestMethod soit avec l'un de:
    • [DeploymentItem(@"TestProjectFolder\SubFolder")] de déployer tous les contenus de <SubFolder> pour l'Essai de répertoire
    • [DeploymentItem(@"TestProjectFolder\SubFolder", "TargetFolder")] de déployer tous les contenus de <SubFolder> de <TargetFolder> dans l'Essai de répertoire

Une dernière remarque sur MSTest (au moins pour VS2010):

Si vous voulez l' <TargetFolder> d'avoir le même nom que l' <SubFolder>, à l'aide de [DeploymentItem(@"SubFolder", @"SubFolder")] échoue silencieusement la MSTest coureur frappe un idiot en cas de bord. C'est pourquoi vous devez préfixer l' <SubFolder> avec l' <TestProjectFolder> ainsi: [DeploymentItem(@"TestProjectFolder\SubFolder", @"SubFolder")]

16voto

Peter K. Points 3837

Pour je l’espère aider quelqu'un d’autre : J’ai essayé toutes les suggestions ici et toujours mon élément de déploiement n’était pas copiée.

Ce que j’avais à faire (comme suggéré ici) a été d’ajouter un deuxième paramètre de l’attribut DeploymentItem :

10voto

Josh Close Points 4901

Si vous allez dans votre fichier .testrunconfig et que sous l'option de déploiement, décochez "Activer le déploiement", les tests seront exécutés à leur emplacement normal et tout fonctionnera comme si l'application était exécutée en dehors d'un test unitaire.

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