2010-07-11 3 views
4

(Bien sûr, je peux dire que c'est "mystérieux" parce que je n'ai pas été en mesure d'identifier le problème.J'espère qu'il sera évident pour l'un de vous lecteurs érudits et que vous pouvez m'éclairer :-)Fitnesse avec .NET est mystérieusement coincé lors de l'exécution des suites

Exécuter un seul test de fitnesse dans mon navigateur (FireFox ou IE) fonctionne bien, mais quand je lance une série de tests ou une série de suites, Fitnesse s'arrête juste après début. Il ne signale jamais l'achèvement du test; ça pend juste.

Je suis en cours d'exécution FitNesse sous Windows XP contre une base de code .NET 3.5. J'ai d'abord attaqué le problème en instrumentant les deux tests FitNesse et les appareils FitNesse avec le code de diagnostic pour tenter de déterminer si elle était en effet du blocage FitNesse ou (plus probablement) ma base de code accessible par les appareils. J'ai donc créé des routines de diagnostic qui écrivent dans un fichier journal pour me dire quand j'entre et que je quitte chaque appareil. Si le fichier journal signale un "entrée" indiquant que vous êtes coincé dans la base de code; si le journal rapporte un «congé» qui pointe vers Fitnesse. Les diagnostics sont assez simples, nécessitant chaque appareil à instrumenté manuellement - observer les Diagnostic.Enter et Diagnostic.Leave méthodes dans le code ci-dessous squelette. (L'argument de la méthode Leave me permet de voir le texte d'une exception, si l'on se produit.)

public class AddFoobarEntityFixture : ColumnFixture 
{ 
    public bool Ok() 
    { 
     Diagnostic.Enter(); 
     string exitMessage = null; 
     try 
     { 
      . . . 
     } 
     catch (Exception exc) 
     { 
      exitMessage = exc.Message; 
      return false; 
     } 
     finally 
     { 
      Diagnostic.Leave(exitMessage); 
     } 
     return true; 
    } 
} 

Après avoir exécuté une série d'essais pour la même suite de tests j'ai remarqué quelques observations surprenantes:

  1. Exécuter à partir d'un navigateur, la sortie FitNesse en retard sur la progression des tests et (dans ce scénario de blocage) ne rattrape. C'est-à-dire, dans le navigateur, je vois n'importe où d'une à peut-être une douzaine de tables de test exécutées. Le fichier journal, d'autre part, a montré jusqu'à environ 35 tables de test pour les mêmes exécutions. Je soupçonne que ce décalage n'est pas lié au verrouillage, car la page Web cesse de se mettre à jour bien avant le blocage, où le fichier journal continue de signaler les tables de test en cours d'exécution.

  2. Le blocage se produit à des endroits aléatoires. Mon diagramme à barres brutes ci-dessous montre presque une douzaine d'essais (un par rangée), avec le temps (ou le nombre de tables de test) sur l'axe horizontal. Chaque "X" représente une table de test traitée.

    1> XXXXXXXXXXXXXXXXXXXXXXX
    2> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    3> XXXXXXXXXXXXXXXXXXXXXX
    4> XXXXXXXXXXXXXXXXXXXXXXX
    5> XXXXXXXXXXXXXXXXXXXXXXXX
    6> XXXXXXXXXXXXXXXXXXXXXXX
    7> XXXXXXXXXXXXXXXXXXXXXXX
    8> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    9> XXXXXXXXXXXXXXXXXXXXXXXX
    A > XXXXXXXXXXXXXXXXXXXXXXXX
    B> XXXXXXXXXXXXXXXXXXXXXXXX

  3. Sans exception, chaque a été équilibrée par Entrez un congé dans le journal. Cela suggère que le problème est avec fitnesse plutôt que le code à l'essai. Elle ne repose sur deux hypothèses importantes, cependant: d'abord que chaque dispositif d'essai est instrumentée, et, deuxièmement, que dans chaque dispositif d'essai instrumenté uniquement le code trivial est en dehors de la zone Entrez-Laisser bracketing (par exemple des choses comme une déclaration de retour de retour qu'une valeur locale ou une déclaration de variable avec une valeur initialisée simple ou non).Je n'ai pas entièrement vérifié ces deux hypothèses, mais je pense qu'elles se révéleront correctes.

J'avais espéré que FitNesse a fourni sa propre exploitation forestière que je puisse voir, par exemple, qui SetUp ou SuiteSetUp a hérité, quand inclut ont été traitées, dont la table d'essai a été en cours d'exécution, etc. D'après ce que j'ai vu , cependant, la seule capacité de journalisation de fitnesse se rapporte à la granularité d'une page de test entière, ce qui est regrettable. Curieusement, mes propres recherches sur le Web n'ont absolument rien révélé d'autres personnes rencontrant ce problème avec fitnesse qui, bien sûr, suggère fortement le problème réside dans mon code de base en quelque sorte.

Toutes les suggestions pour isoler ce problème, que ce soit dans fitnesse ou dans mon code de base, sont appréciées! Étrangement


2010.07.15 Mise à jour

, je pense que je résolu le problème. En changeant le port que fitnesse utilise (ce que je pense être) la valeur par défaut de 8080 à un numéro de port moins populaire, maintenant je peux exécuter des suites de tests ou suites de suites sans problème. J'ai vérifié que je n'avais rien d'autre fonctionnant sur le port 8080 (avec TCPView). Donc, quelqu'un a des idées sur les raisons pour lesquelles cela ferait une différence?

+0

Quelle version de FitNesse utilisez-vous? Il y a eu des problèmes de synchronisation dans certaines versions de FitNesse - certaines ont été corrigées. Le vôtre a peut-être été réparé - ou vous en avez découvert un nouveau :( –

+0

J'aurais dû inclure ce détail, Mike: Je cours le dernier et le meilleur, v20100303 –

+0

OK, pas encore de réponse facile –

Répondre

0

Essayez cette

http://www.asoftwarecraft.com/2010/01/troubleshooting-with-fitsharp-and.html

et voir s'il y a une exception non gérée se passe.

+0

Mike, je ne sais pas Je n'ai jamais installé quoi que ce soit dans C: \ Program Files, je viens de télécharger le répertoire fitnesse de mon groupe depuis Subversion et d'appeler le serveur fitnesse avec un fichier run.bat qui exécute "java -jar fitnesse.jar". .. " J'ai un répertoire dotnet contenant un TestRunner.exe mais qui est aussi proche que je l'ai Aussi, ma page racine fitnesse contient cette définition: ! Define TEST_RUNNER {dotnet \ FitServer.exe} –

+0

OK, vous avoir l'ancienne implémentation de FitNesse.NET Il existe une implémentation plus récente: voir http://www.syterra.com/FitSharp.html mais je ne pense pas que ll résoudra votre problème car le code du protocole FitServer qui communique avec FitNesse n'a pas changé. –

0

Je sais que c'est une vieille question, mais j'ai pensé que je l'ajouterais pour tous les futurs spectateurs.

Nous avons eu un problème lors de l'exécution des suites et il s'est avéré être l'antivirus Trend Micro nouvellement installé (ou comme ils l'appellent "Worry-Free Business Security").

La fonctionnalité "Filtrage d'URL" faisait partie de cette suite.

Avez-vous quelque chose de similaire?