2011-01-04 14 views
5

Ich habe mit der CUIT-Funktion (Codeded UI Test) von VS2010 gearbeitet.
Beim Aufzeichnen des CodedUI-Frameworks werden viele hierarchische Klassen generiert.Handkodierung eines codierten UI-Tests

Ich frage mich, ob die Codierung (von Hand) eine CUIT würde den Code erstellt und wäre es so optimiert (in Suchelementen) wie generierten Code?

In welchen Szenarien kann ein CUIT auch manuell codiert werden?

+1

Eines der Szenarien könnte sein, dass der Testrekorder keine Steuerelemente finden kann. Oder wenn die Fenstertitel der Containersteuerelemente dynamisch sind – CoffeeCode

Antwort

4

Cuite (Coded UI-Test erweitert) Rahmen ist für Leute, die Hand-Codierung bevorzugen. http://cuite.codeplex.com/

Cuite ist eine dünne Schicht auf der Oberseite des Motors Visual Studio Team Test der codierten UI-Test Microsoft entwickelt, die Code reduzieren hilft, erhöht Lesbarkeit und Wartbarkeit, aber auch ein paar coole Features für die Bereitstellung von Automatisierungstechniker.

Mit CUITe können Sie ein viel einfacheres Objekt-Repository (== UIMap) definieren. Jede Seite/jedes Fenster wird in einer separaten Klassendatei definiert, und jede UI-Steuerungsdefinition wird nur ein Liner sein. Sie können allgemeine Steuerelemente in eine übergeordnete Klasse verschieben, wodurch die Wartbarkeit erhöht wird. Sie können die Seiten-/Fensterdefinitionsklassen auch in verschiedene Ordner kategorisieren, wenn Sie es für richtig halten.

+0

Ich benutze CUITe seit v1.0.1 und es war großartig! :) –

0

Sie können weniger Code schreiben, aber es wird wahrscheinlich weniger wartbar und anfälliger für Brechen sein. Sie können die partielle Klasse verwenden, um die Suchklauseln wirksam zu überschreiben, nachdem der Code generiert wurde.

3

Ich habe an Coded UI gearbeitet, von meinem Verständnis aufgenommen/generierten Code ist zu komplex und schwierig zu pflegen.

Ich benutze immer Handcodierung, die einfach und leicht zu pflegen ist.

Hier ist vollständige Probe Hand codierte UI-Skript für Silber-Licht Anwendung

[TestMethod] 
public void SilverlightHANDCODINGTest() 
{ 
    BrowserWindow br = BrowserWindow.Launch(@"http://localhost:1377/SilverlightApplication1TestPage.html"); 

    UITestControl sCustom = new UITestControl(br); 
    sCustom.TechnologyName = "Web"; 
    sCustom.SearchProperties.Add("ControlType", "Custom"); 
    sCustom.SearchProperties.Add("TagName", "OBJECT"); 
    sCustom.SearchProperties.Add("Type", "application/x-silverlight-2"); 
    sCustom.SearchProperties.Add("TagName", "OBJECT"); 

    // sCustom.DrawHighlight(); 

    SilverlightControl sframe = new SilverlightControl(sCustom); 
    sframe.TechnologyName = "Silverlight"; 
    sframe.SearchProperties.Add(SilverlightControl.PropertyNames.MaxDepth, "-1"); 
    sframe.DrawHighlight(); 

    SilverlightEdit sTextBox = new SilverlightEdit(sCustom); 
    sTextBox.TechnologyName = "Silverlight"; 
    sTextBox.DrawHighlight(); 
    Playback.Wait(2000); 

    sTextBox.SetProperty(SilverlightEdit.PropertyNames.Text, "Thank god"); 

    SilverlightButton sButton = new SilverlightButton(sCustom); 
    sButton.TechnologyName = "Silverlight"; 
    sButton.SearchProperties.Add(SilverlightButton.PropertyNames.DisplayText, "Button"); 

    sButton.DrawHighlight(); 

    Playback.Wait(2000); 

    Mouse.Click(sButton); 

    SilverlightComboBox sComboBox= new SilverlightComboBox(sCustom); 
    sComboBox.TechnologyName = "Silverlight"; 

    sComboBox.DrawHighlight(); 

    Playback.Wait(2000); 

    sComboBox.SetProperty(SilverlightComboBox.PropertyNames.SelectedItem,"Kishore"); 
} 

Danke,

+0

Sagen Sie, dass Sie keine UIMaps erstellen? Scheint so, als würde viel von diesem Code in die UIMap-Dateien gehen und nicht die Testmethode selbst, um die Testspezifikation von der Testimplementierung zu trennen. Es scheint auch so, als müssten Sie mit den Coded UI APIs vertraut sein, um Code wie diesen – EdmundYeung99

+0

@ EdmundYeung99 handschriftlich zu schreiben, aber ich denke, es ist wirklich ein gutes Beispiel für Hand-only-Code. –