Question

J'ai ajouté quelques tests WatiN simples à notre application aujourd'hui pour vérifier qu'une valeur de cookie est correctement stockée.

Les tests réussissent localement sur toutes les machines de l'équipe. Cependant, lorsque CruiseControl exécute les tests sur notre serveur de génération, ces nouveaux tests échouent sur la ligne contenant

browser.GetCookie (url, cookieName)

L'erreur indiquée dans le journal CruiseControl est l'ancien marron de:

La référence à un objet n'est pas définie sur une instance d'objet.

Je me suis connecté au serveur de construction avec Remote Desktop, en utilisant le même compte d'utilisateur sous lequel CruiseControl est exécuté, et j'exécute MbUnit manuellement, et les tests réussissent. Donc, il ne peut pas être un problème avec les autorisations sur le serveur de génération pour accéder aux cookies.

J'ai consulté toute la documentation de WatiN, mais je suis resté vide. J'ai redémarré le service CruiseControl. J'ai essayé tout ce que je pouvais penser et je ne sais plus trop ce qui pourrait être différent dans la façon dont Cruise Control exécute ces tests.

Quelqu'un sait-il ce qui pourrait causer cela et / ou comment le résoudre?

Était-ce utile?

La solution

Essayez d’exécuter CruiseControl en tant qu’application et non en tant que service. WatiN a tendance à se bloquer lorsqu'il est exécuté à partir d'un service (car les services Windows ne sont pas attachés à une session d'interface utilisateur et que WatiN en a besoin pour gérer les boîtes de dialogue dans IE).

Mais à part ça ... rappelez-vous que les cookies IE sont stockés dans votre profil d'utilisateur. Les profils ne sont pas chargés lors de l'exécution des services. Ce sont des processus démons qui s'exécutent en arrière-plan et qui ne s'exécutent pas dans le contexte d'une session. Je pense que c'est la cause de votre exception.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top