2010-11-25 2 views
2

Ich habe einen Coded UI-Test 2010, der einige Aktionen für eine Website ausführt. Ich bin in der Lage, eine Datenquelle zu einer "Testmethode" hinzuzufügen, die die gesamte Methode einmal pro Datensatz wiederholt.Wie kann ich eine Datenquelle zu einer UIMap-Methode anstelle einer Testmethode hinzufügen (VS 2010-Test mit codierter UI)

Aber was ich wirklich tun möchte, ist Schleife nur einen Teil des Tests, der nur eine einzige aufgezeichnete Methode in der UIMap ist.

sagen Lassen Sie die Testmethode etwas wie folgt aussieht:

//[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(); 
    } 

Es ist nur UIMap.CreateCommunity(), die ich will Schleife die Datenquelle. Ich möchte nicht, dass alle 3 Methoden pro Datensatz in der Datenquelle ausgeführt werden, was passiert, wenn ich die Datenquelle an die Testmethode anschließe (der Teil, der oben auskommentiert wurde).

Gibt es eine Möglichkeit zu erreichen, was ich hier versuche?

Danke.

+0

Lassen Sie mich sehen, ich werde diese einen anderen Weg fragen ... ohne Handkodierung alles (ich möchte einige der eingebauten CUIT Magie verwenden), bin ich in der Lage, nur eine Teil einer codierten UI Testmethode über eine Datenquelle (nicht die gesamte codierte Testmethode) zu loopen. – Jeff

Antwort

0

Sie müssen die Methoden ClassInitialize und ClassCleanup verwenden. Sie platzieren es in der #region Zusätzliche Testattribute Bereich an der Unterseite. Also für Sie würde es etwas wie folgt aussehen:

#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

Würdest du bitte erklären, was 'Playback.Initialize()' und 'Playback.Cleanup()' machen? Sollte ein Aufruf von "Initialize" von der Eigenschaft "IsInitialized" abhängig gemacht werden? Warum wird 'Playback.Cleanup()' unmittelbar nach der Aktion aufgerufen und nicht am Ende der Testsuite? –

+1

Was ist der "sharedTest" hier? – atiyar

+0

Dies ist eine alte Antwort, aber Playback.Initialize() und Playback.Cleanup() laufen vor und nach dem eigentlichen Test. Der 'sharedTest' ist in diesem Fall eine andere Testmethode, die ich anrufe. Es ist ein paar Jahre her, dass ich meine Antwort geschrieben habe und seitdem Selenium WebDriver (C#) anstelle von Visual Studio 2012 verwendet habe - was viel besser für mich funktioniert. Tut mir leid, wenn das nicht hilft. – kgodoy

0

zuerst müssen Sie einen neuen UIMap in Ihrer codedUI Klasse definieren

[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(); 
     } 
    } 
} 
Verwandte Themen