Je ne sais pas comment spécifier le masque correct pour rechercher mes assemblages de test dans la définition de construction TFS2010.
Je n'utilise pas de dossier binaires par défaut pour les assemblys de sortie. Chaque projet de test a son propre dossier de sortie Bin \ Debug ou Bin \ Living.
Si j'utilise le masque par défaut ** \ * test * .dll Mes tests ont échoué avec cette erreur: ceci est parce que ** \ * test * .dll masque trouvera plusieurs résultats pour le Même assemblage dans les dossiers Bin \ Debug et Obj \ Debug. P> J'ai essayé de changer ce masque pour exclure le dossier Obj \ débogé et utiliser uniquement la corbeille: P> To - testAssemblies
From - testAssemblies.Where(Function(o) Not o.Contains("\obj\")).ToList()
5 Réponses :
L'activité de construction qui vous intéresse est nommée "Rechercher des assemblages de test":
p>
Donc, ce que vous placez à la définition de construction est concaténé après la variable de script de construction Ce Vous pouvez faire la queue une nouvelle version où vous définissez votre «Verbosité de journalisation» égale à Je suppose que vous avez des problèmes avec vos paramètres de configuration / de plate-forme, mais sans entrée de béton qui devine simplement. P> sortiedirectory code>. p>
de sortieDirectory code> est initialisé pour chaque configuration dans l'activité "Initialiser la sortieDirectory":
p>
Diagnostic code>. Une fois que cela a couru (et échoué), vérifiez ce qui se passe avec votre construction. p>
Tu as raison. La collection Testassemples est remplie par «Rechercher des assemblages de test». J'ai une activité foreach après cette activité pour enregistrer le contenu de la collection TestStassemblies. Si j'utilise ** testez i> .dll masque, le résultat est correct, mais avec des ensembles de test en double des dossiers bin et obj. J'ai essayé de le filtrer en utilisant des masques différents, mais il semble que j'utilise un mauvais masque. La collection Testassemblies était toujours vide. Je peux le filtrer dans le code comme solution de contournement ...
Probablement le Pour résoudre ce problème, veuillez ajouter Aussi alternative, vous pouvez également exécuter un Session ProcessMonitor sur votre système de construction Pour voir où votre moteur de construction TFS recherche réellement vos assemblages de test. Ou effectuer une journalisation dans le flux de travail de construction / activité elle-même. P>
Lorsque vous avez trouvé le problème, définissez à nouveau votre fenêtre de recherche pour ne pas rechercher des structures de sous-répertoire non pertinentes. P> ** code> au début de votre filtre est le problème. Le point de départ de la recherche est à un endroit où vous ne vous attendriez pas à ce que ce soit et que les sous-répertoires ne contiennent pas vos fichiers de test. P>
.. \ \ \ \ code> au début de votre expression de filtre. À des fins de débogage, cela sera sorti de la structure de sous-réception et effectuez une recherche plus large de votre système pour les fichiers de test. Vous pouvez également faire la première partie absolue, afin de vous assurer que vous recherchez dans les sous-arbres du répertoire de droite. P>
Je l'ai essayé mais les résultats sont toujours les mêmes. J'ai changé de masque de recherche à ".. \ .. \ \ ** \. \. Unitests.dll". Des ensembles de test supplémentaires ont été trouvés à partir d'autres constructions. Ensuite, j'ai changé de masque de recherche sur "" .. \ \ \ \ \ ** \ bin \ ** \. UnitestS.dll "et aucun des assemblages de test n'a été trouvé.
Pouvez-vous alors essayer avec le moniteur de processus en cours d'exécution sur votre système de construction. Je suis curieux où il cherche vos fichiers. Et veuillez poster la partie de la structure de sous-répertoire que vos assemblages de test sont dans. Nous pourrions peut-être découvrir pourquoi votre motif ne correspond pas.
Ajout à cette réponse car il m'a fallu un certain temps pour savoir quel processus surveiller réellement - c'est tfsbuildservicehost.exe b>.
J'ai rencontré fondamentalement le même problème que vous avez. J'ai des développeurs à l'aide d'un assemblage de test d'assistance (Testhelper) et d'un dossier Webbli-Webublié qui causait ce problème.
Ce que j'ai fini par faire pour résoudre ce problème, résout le problème de l'obtention de multiples dll de test transmis à Mstest. "Eh bien, c'est ce que j'essaie de faire avec mon masque", vous pouvez penser! J'ai essayé cette même solution mais je suis venu vide. P>
J'ai écrit une tâche personnalisée et l'a insérée après que le processus de construction trouve les ensembles de test. Voici le code de la tâche personnalisée: p> Vous l'inséreriez après la tâche "Rechercher des assemblages de test". P> P>
Salut Mike. J'utilise Attribuer une activité après la recherche de FindMatchingFiles avec la requête LINQ pour filtrer les résultats de FindMatchingFiles. J'ai ajouté une section de contournement à ma question.
Ok, c'est fondamentalement ce que je fais ici. Je fais juste un peu plus d'ingénierie. Je vérifie les noms de fichiers et pas le chemin complet. Je publie également un peu d'informations "débogage". Je suis heureux de venir à la même conclusion. Me fait me sentir mieux à propos de cette méthode!
J'ai écrit un programme qui vous permet de tester votre SearchPatterns contre FindMatchingFiles et de l'avoir posté sur ce fil: Stackoverflow.com/Questtions/4524910/...
J'utilise toujours une activité FindMatchingFiles, mais je devais ajouter une activité d'attribution avec les paramètres suivants: P>
Testassemblies De - Testassemblies.Où (fonction (O) non O.Contains ("\ obj \"))) Tolist () Je filtrant tous les ensembles de test trouvés dans les dossiers "Obj" de cette façon. P>
J'ai rencontré ce problème, mais j'ai constaté que des doublons plutôt que de bin et de l'OBJ contenant des doublons, j'avais de nombreuses copies des mêmes dll apparaissant dans divers dossiers de projet.
La réponse de Ludwo avec Attribuer code> était presque Assez pour le réparer, mais pour ma situation, j'avais besoin d'une valeur plus générale pour le paramètre
à partir de code>. Ce VB regroupe les chemins de fichiers découverts par nom de fichier, puis choisit le premier chemin de chaque groupe. Bien sûr, il ne travaillera que si et seulement si chaque nom de fichier correspond à une DLL logique: p>
Oui, a également dû recourir à l'utilisation de FindMatchingfiles et d'une activité d'attribution.