2010-12-08 60 views
0

J'ai le code tel que:Pouvez-vous invoquer un contrôle plutôt que de lancer une application pour les tests d'interface utilisateur codés?

[CodedUITest] 
public class CodedUITest1 
{ 

[TestMethod] 
public void CodedUITestMethod1() 
{ 
    using(var dlg = new MyWinForm()) 
    { 
    dlg.Show(); 
    System.Threading.Thread.Sleep(2000); 
    this.UIMap.AssertMethod1(); 
    this.UIMap.RecordedMethod1(); 
    this.UIMap.AssertMethod2(); 
    } 

    } 
} 

Le code est en cours d'exécution très bien quand je lançais manuellement l'application (avant d'appeler le test) sans la clause en utilisant pour créer directement le contrôle. Je voudrais juste utiliser une référence pour créer une instance du contrôle et aller de là au lieu de compter sur essayer de déterminer un chemin à l'exécutable et l'ouvrir. L'application reste bloquée avec un ContextSwitchDeadlock.

Existe-t-il un moyen de faire des tests UI codés sans lancer un processus? (en utilisant la référence et en créant le contrôle dans le code de test) ou y at-il quelque chose qui ne va pas dans la façon dont j'essaie de le faire?

+0

Ensuite, après avoir cliqué sur OK pour le blocage du Context Switch et cliqué sur play à nouveau dans VS2010 ultimate ... Je reçois une UITestControlNotFoundException – Maslow

+0

Je sais que c'était il y a 5 ans mais avez-vous déjà réussi à faire fonctionner cela? J'essaie de faire la même chose et de courir dans les mêmes problèmes? –

+0

Je ne crois pas que je l'ai fait. – Maslow

Répondre

0

Il se peut que vous invoquiez les portions de test ui codées (this.UIMap ...) sur un thread séparé. Mais comme vous l'avez maintenant, ils sont tous les deux sur le même fil, donc vous allez vous retrouver dans l'impasse.