11
votes

Pourquoi Mstest DepploymentItem échoue-t-il lors de l'exécution de tous les tests en solution?

J'ai une solution Visual Studio 2010 avec plusieurs projets Mstest. L'un des projets de test nécessite un fichier dans un répertoire spécifique pour exécuter.

[TestClass]
[DeploymentItem("ReportEngine.config")]
[DeploymentItem("Report Files", "Report Files")]
public class MyReportTests { }


3 commentaires

Si vous cliquez avec le bouton droit de la souris sur ces éléments de votre solution, sont-ils définis sur copier? Je me demande si vous avez besoin de les mettre pour copier toujours ... Juste une supposition.


Oui, les éléments sont définis sur "Copier toujours". Sinon, le [DeploymentItem] dans ProjectScope ne fonctionnera pas aussi


"Les fichiers de rapport" sont relatifs à la racine de la solution, correct? Est-ce le cas dans votre projet?


4 Réponses :


4
votes

Je vous ai initialement donné des instructions pour vous assurer que le déploiement a été activé dans vos paramètres de test. Vous avez dit que c'était.

Assurez-vous que vous avez un déploiement activé pour le test de test.

  1. Modifier votre .TestStsettings dans le dossier d'éléments de la solution
  2. Sélectionnez la catégorie de déploiement
  3. Vérifiez l'option "Activer le déploiement"
  4. Cliquez sur "Appliquer" et "Fermer"

    Cependant, depuis la dernière fois que j'ai répondu, j'ai appris que le déploymentItem attribue uniquement des méthodes cibles (et, puis, il semble que fonctionne uniquement sur testmethod S ). Cela n'aurait jamais pu faire la façon dont vous avez la possibilité de décorer une classe . J'ai également remarqué votre commentaire sur votre question (édité pour la grammaire)

    Oui, les éléments sont définis sur COPY TOUJOURS , sinon le Déploymyplyntem dans l'exécution du test de projet ne fonctionnerait pas.

    Il y a beaucoup de Discussion si cela est nécessaire ou non pour faire DeploymentItem Travail. Je soupçonne que quelque chose que nous n'avons pas encore identifié est de faire passer des tests lors de leur exécution du projet. Veuillez supprimer le déploymentItem S complètement et essayez vos deux essais (à partir du projet et de la solution) et voyez quels résultats vous obtenez.


    Dans le cas où les articles de déploiement fonctionnent malgré la documentation

    assurez-vous que reporterengine.config et reporterfiles \ sont où vous et Mstest attendez-vous à ce qu'ils soient. Les chemins de fichiers relatifs sont résolus à partir du "relativentPath". Par défaut, c'est le $ (solutiondir) . Sauf si vous le remplacez dans les testsettings . S'il vous plaît vérifier sur cela.

    mais, par défaut xxx

    est étendu à quelque chose comme xxx

    Ensuite, par exemple, à xxx


3 commentaires

Malheureusement, c'est pas la solution à mon problème. I Alrady avait ces paramètres. Sinon, le test ne réussirait pas au projetCOPE. J'ai plusieurs projets de test lorsque je les exécute tous ensemble (sur la portée de la solution), certains échouent parce que [DeploymentItem] est ignoré. Lorsque j'exécute un projet de test, les tests réussissent, le déploiement fonctionne car les paramètres de la réponse ont été effectués.


Oh, désolé pour ça ... le truc de prime est un peu maladroit dans cette situation :(


+1, je devais créer un fichier testsettings et l'ajouter à mon dossier de test de mon unité dans ma solution - puis sélectionnez ce fichier de testSettings dans Visual Studio. Il n'était pas apparu d'une autre documentation que j'ai vu que je devrais créer un pour activer déploymentItem s.



1
votes

Les éléments de déploiement sont notoirement flocons ... Avez-vous envisagé d'utiliser MSBuild et d'éditer le fichier .CSPROJ directement? xxx

Je ne sais pas si Msbuild contient une variable pour le répertoire de test actuel ... car il ne semble pas être impliqué dans le processus.


0 commentaires

0
votes

semble être un problème de correction Microsoft Won-T.


2 commentaires

Avez-vous un lien vers la question de KB ou Connect qui le spécifie?


J'ai posé la question en mai 2011 et après 16 mois et une prime, j'étais frustré qu'il n'y avait pas de solution. J'ai donc fait ma propre réponse acceptée.



0
votes

Peut-être qu'un cas de test se déplace / supprime le fichier? Selon L'article MSDN "Comment: déployer des fichiers pour tests" Les fichiers sont déployés une seule fois:

Lorsque vous sélectionnez un ensemble de tests à exécuter, tous les éléments spécifiés dans leurs attributs de déploiementItem sont copiés avant la mise hors tension du test.


0 commentaires