2010-11-25 50 views
2

J'ai un test d'interface utilisateur codée 2010 qui effectue certaines actions sur un site Web. Je suis capable d'ajouter une source de données à une "méthode de test" qui boucle la méthode entière une fois par enregistrement. Mais, ce que je veux vraiment faire est de boucler seulement une partie du test qui est juste une seule méthode enregistrée dans l'UIMap.Comment puis-je ajouter une source de données à une méthode UIMap au lieu d'une méthode de test (Test d'interface utilisateur codé VS 2010)

Disons que la méthode d'essai ressemble à quelque chose comme ceci:

//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\TestCommunities.xml", "Community", DataAccessMethod.Sequential), DeploymentItem("Tests\\WebTests\\DataSources\\TestCommunities.xml"), TestMethod]   
public void LoginCreateCommunities() 
    { 
     this.UIMap.LoginAdmin(); 
     //this.UIMap.CreateCommunityParams.UIItem0EditText = TestContext.DataRow["CommunityName"].ToString(); 
     this.UIMap.CreateCommunity(); 
     this.UIMap.LogoffClose(); 
    } 

Il est seulement UIMap.CreateCommunity() que je veux boucler la source de données. Je ne veux pas que les 3 méthodes s'exécutent par enregistrement dans la source de données, ce qui arrive quand j'attache la source de données à la méthode de test (la partie commentée plus haut).

Existe-t-il un moyen de réaliser ce que j'essaie de faire ici?

Merci.

+0

Laissez-moi voir, je vais demander cette autre façon ... sans codage à la main de tout (je voudrais utiliser une partie de la magie intégrée de CUIT), suis-je capable de boucler seulement une partie d'une méthode de test codée UI via une source de données (pas la méthode de test codée entière). – Jeff

Répondre

0

Vous devez utiliser les méthodes ClassInitialize et ClassCleanup. Vous le placez dans la zone #region Autres attributs de test en bas. Donc, pour vous, il aurait l'air quelque chose comme:

#region Additional test attributes 

    [ClassInitialize] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LoginAdmin(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 

    } 


    [ClassCleanup] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LogoffClose(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    #endregion 
+0

Pourriez-vous expliquer ce que 'Playback.Initialize()' et 'Playback.Cleanup()' font? Un appel à 'Initialize' devrait-il être conditionnel à la propriété' IsInitialized'? Pourquoi 'Playback.Cleanup()' est-il appelé immédiatement après que l'action est terminée, et pas à la toute fin de la suite de tests? –

+1

Qu'est ce que le "sharedTest" ici? – atiyar

+0

Il s'agit d'une ancienne réponse, mais les commandes Playback.Initialize() et Playback.Cleanup() s'exécutent avant et après le test lui-même. Le 'sharedTest' dans ce cas est une autre méthode de test que j'appelle. Cela fait quelques années que j'ai écrit ma réponse et que je suis passé à l'utilisation de Selenium WebDriver (C#) à la place avec Visual Studio 2012 - ce qui fonctionne beaucoup mieux pour moi. Désolé si cela ne vous aide pas. – kgodoy

0

vous devez d'abord définir une nouvelle UIMap dans votre codedUI classe

[CodedUITest] 
public class CodedUITest1 
{ 
    static private UIMap sharedTest = new UIMap(); 

    .... 

    [ClassInitialize()] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedStartApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    [ClassCleanup()] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedCloseApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 
}