2009-02-20 9 views
0

J'ai un problème avec le test watin qui devrait parcourir pour pdf et le télécharger sur une page Web. Ce test se passe bien sur ma machine, toujours trouver pdf, cliquez sur soumettre et attendre 30 secondes pour le téléchargement terminé. Mais quand j'essaie d'exécuter ce test sur la machine de construction (teamcity), il arrive que le test se bloque au moment où il devrait attendre le téléchargement. Le problème est que le test ne temporise pas, même si je mets le timeout à nunit sur 1 minute pour un test complet, ou essaye de recharger la page. Le test a simplement gelé le site entier lors de l'importation.Watin test hang application lors du téléchargement de fichier

Il est très important de tester cette fonctionnalité, mais comme les tests de téléchargement ne fonctionnent pas, nous devons le faire manuellement et ce n'est pas vraiment une idée de l'automatisation des tests.

Quelqu'un a-t-il une idée pour résoudre ce problème de téléchargement? Ou au moins réussir à temporiser ce test.

stack trace = at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) 
    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) 
    at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) 
    at mshtml.DispHTMLBaseElement.click() 
    at WatiN.Core.InternetExplorer.IEElement.ClickOnElement() 
    at WatiN.Core.Element.Click() 
    at WatiN.Core.FileUpload.Set(String fileName) 
+0

Qu'est-ce que 'Watin'? –

Répondre

1

Le problème était que WatiN utilisait sendkeys pour définir le fichier (nom) à télécharger. Dans WatiN 2.0 beta 1, ceci est remplacé par l'utilisation de certains appels d'API. Cela a permis de résoudre le problème de l'accrochage des tests lors de l'automatisation d'une boîte de dialogue nécessitant une saisie de texte.

1

Je pense que le problème ici est que votre test unitaire dépend trop de ressources externes, telles que votre système de fichiers de votre machine de développement, le réseau, etc.

Demandez-vous ce que l'importance de le test est: y a-t-il une logique métier impliquée que vous pouvez mettre dans une classe séparée? Ensuite, vous pouvez écrire des tests pour cette classe. Ce dont vous avez essentiellement besoin est de tester toute la logique du processus de téléchargement sans réellement télécharger un fichier ou aller sur le réseau.

+1

Mais WATiN est destiné aux tests de régression et non aux tests unitaires. Votre point est valide pour les tests unitaires, mais les tests de régression vont dépendre des ressources externes. – Leslie

Questions connexes