2012-04-12 5 views
0

Ich möchte meinem UIMap.cs (nicht UIMap.Designer.cs) ein handgeschriebenes codiertes Steuerelement hinzufügen.Fügen Sie das codierte Steuerelement zu UIMap hinzu (Codierter UI-Test)

Zum Beispiel, wenn ich aufnehme: writing in a texBox, erhalte ich den folgenden Code in UIMap.Designer.cs:

public class Recorded_Writing_In_forRecordParams 
{ 
    public string UIForRecordEditText = "forRecord"; 
} 

public class UIMainWindowWindow : WpfWindow 
{ 
    public UIMainWindowWindow() 
    { 
     this.SearchProperties[WpfWindow.PropertyNames.Name] = "MainWindow"; 
     this.SearchProperties.Add(new PropertyExpression(WpfWindow.PropertyNames.ClassName, "HwndWrapper", PropertyExpressionOperator.Contains)); 
     this.WindowTitles.Add("MainWindow"); 
    } 

    public WpfEdit UIForRecordEdit 
    { 
     get 
     { 
      if ((this.mUIForRecordEdit == null)) 
      { 
       this.mUIForRecordEdit = new WpfEdit(this); 
       this.mUIForRecordEdit.SearchProperties[WpfEdit.PropertyNames.AutomationId] = "forRecord"; 
       this.mUIForRecordEdit.WindowTitles.Add("MainWindow"); 
      } 

      return this.mUIForRecordEdit; 
     } 
    } 

    private WpfEdit mUIForRecordEdit; 
} 

ich diese Kontrolle in meinem CodedUITest verwenden möchten. Gibt es eine Möglichkeit, die TextBox in der UIMap.cs durch eigene Codierung zu suchen oder in meiner TestMethod zu suchen? Was ist der beste Weg?

+0

Nicht sicher, ich verstehe, was Sie versuchen zu tun. Warum durchsuchen Sie die UIMap nach einem Textfeld in Ihrem Code? Oder möchten Sie Ihre Anwendung nach einem Textfeld mit einem bestimmten Wert durchsuchen? – stoj

Antwort

1

Danke für die Antwort, aber ich mein Problem auf meinem eigenen mit der folgenden Art und Weise gelöst:

UIMap.cs

public partial class TestLittleAppUIMap 
{ 
    private MyWindow mMyWindow; 
    public MyWindow MMyWindow 
    { 
     get 
     { 
      if (this.mMyWindow == null) 
      { 
       this.mMyWindow = new MyWindow(); 
      } 
      return this.mMyWindow; 
     } 
    } 
} 

public class MyWindow : WpfWindow 
{ 
    private WpfEdit mWpfEdit; 

    public MyWindow() 
    { 
     this.SearchProperties[WpfWindow.PropertyNames.Name] = "MainWindow"; 
     this.SearchProperties.Add(new PropertyExpression(WpfWindow.PropertyNames.ClassName, "HwndWrapper", PropertyExpressionOperator.Contains)); 
     this.WindowTitles.Add("MainWindow"); 
    } 

    public WpfEdit MWpfEdit 
    { 
     get 
     { 
      if ((this.mWpfEdit == null)) 
      { 
       this.mWpfEdit = new WpfEdit(this); 
       #region Search Criteria 
       this.mWpfEdit.SearchProperties[WpfEdit.PropertyNames.AutomationId] = "forOwn"; 
       this.mWpfEdit.WindowTitles.Add("MainWindow"); 
       #endregion 
      } 
      return this.mWpfEdit; 
     } 
    } 

CodedUI-Test

[TestMethod] 
public void TestLittleAppOwnMap() 
{ 
    this.UIMap.MMyWindow.MWpfEdit.DrawHighlight(); 
    Playback.Wait(2500); 
} 

Es ist fast eine Kopie der Designerklasse.

Für direkt im TestMethod der Suche können Sie so gehen:

[TestMethod] 
public void TestLittleAppOwn() 
{ 
    WpfWindow w = new WpfWindow(); 
    w.SearchProperties[WpfWindow.PropertyNames.Name] = "MainWindow"; 
    w.SearchProperties.Add(new PropertyExpression(WpfWindow.PropertyNames.ClassName, "HwndWrapper", PropertyExpressionOperator.Contains)); 
    w.DrawHighlight(); 

    WpfEdit e = new WpfEdit(w); 
    e.SearchProperties[WpfEdit.PropertyNames.AutomationId] = "forOwn"; 
    e.SetProperty("Text","myText"); 
    e.DrawHighlight(); 
    Playback.Wait(2500); 
} 

Wo Playback.Wait nur eine kurze Zeit warten, um das Highlight für die Ansicht.