This project is read-only.

UI-Test Funktionen

Um die richtige Ausführung der Benutzeroberfläche zu kontrollieren, gibt es eine Reihe von Test-Funktionen die Standart-Werte überprüfen:

IsChecked
ToggleButton_IsChecked(String pToggleButtonName, DependencyObject pParent)
ToggleButton_IsChecked(String pToggleButtonName)

ToggleButton_IsNotChecked(String pToggleButtonName, DependencyObject pParent)
ToggleButton_IsNotChecked(String pToggleButtonName)
Diese Funktionen prüfen ein von ToggleButton abgeleitetes Control daraus ob die Eigenschaft "IsChecked" auf true bzw. auf false ist. Ist dies nicht der fall wird ein Fehler ausgelöst.
Diese Funktion funktioniert mit den Controls:
  • ToggleButton
  • CheckBox
  • RadioButton
  • Alle von ToggleButton abgeleiteten Controls

SelectedItem
Selector_IsSelectedItemNull(String pSelectorName, DependencyObject pParent)
Selector_IsSelectedItemNull(String pSelectorName)

Selector_IsSelectedItemNotNull(String pSelectorName, DependencyObject pParent)
Selector_IsSelectedItemNotNull(String pSelectorName)
Diese Funktionen überprüfen die SelectedItem Eigenschaft eines Selectors auf Null bzw. nicht Null.
Die Funktion funktioniert mit den Controls:
  • Selector
  • ListBox
  • ComboBox
  • Alle von Selector abgeleiteten Controls

Text
TextBox_IsTextEmpty(String pTextBoxName, DependencyObject pParent)
TextBox_IsTextEmpty(String pTextBoxName)

TextBox_IsTextNotEmpty(String pTextBoxName, DependencyObject pParent)
TextBox_IsTextNotEmpty(String pTextBoxName)

TextBox_IsTextEqual(String pTextBoxName, string pDesiredText, DependencyObject pParent)
TextBox_IsTextEqual(String pTextBoxName, string pDesiredText)
Mit diesen Funktionen kann die Eigenschaft Text einer TextBox überprüft werden.

Slider Value
Slider_IsValueEqual(String pSliderName,double pDesiredValue, DependencyObject pParent)
Slider_IsValueEqual(String pSliderName, double pDesiredValue)
Mit dieser Funktion kann die Value-Eigenschaft eines Slider geprüft werden.

IsVisible
Control_IsVisible(String pControlName)
Control_IsVisible(String pControlName, DependencyObject pParent)
Die Funktion prüft ob ein Control von Typ FrameworkElement die Eigenschaft Visibility auf Visible hat.

ValidationError
Control_HasValidationError(String pControlName, DependencyObject pParent)
Control_HasValidationError(String pControlName)

Control_HasNotValidationError(String pControlName, DependencyObject pParent)
Control_HasNotValidationError(String pControlName)
Mit diesen Funktioen kann überprüft werden ob bei einem Control ein WPF Binding Validation Error ansteht.

Navigation
Navigation_ListenIfNavigated(int pListenTimeout)

Navigation_HasNavigate(int pWaitForNavigateMS)
Navigation_HasNotNavigate(int pWaitForNavigateMS)
Mit diesen Funktionen können Sie prüfen ob eine Navigation zu einer anderen Page stattgefunden hat oder nicht.
Zunächst sagen Sie der UITestEngine mit der Funktion "Navigation_ListenIfNavigated" das es horchen sol ob eine Navigation statt findet. Hierfür gegistriert es sich bei NavigationService beim Event "Navigated". Mit "pListenTimeout" können Sie angeben wielange die UITestEngine auf eine Navigation warten soll bevor es das horchen beendet.
Mit den Funktionen "Navigation_HasNavigate" und "Navigation_HasNotNavigate" können Sie prüfen ob nun eine Navigartion stattgefunden hat. Hier können Sie wieder angeben wielange auf eine eventuelle Navigation gewartet werden soll.
Zwischen dem Aufruf "Navigation_ListenIfNavigated" und dem Aufruf "Navigation_HasNavigate" oder "Navigation_HasNotNavigate" führen Sie eine Aktion aus die eine Navigation durchführen soll oder nicht.
Beispiel:
Ein Login-Screen soll getestet werden. Mit falschem Passwort soll keine Navigation durchgeführt werden, mit richtigem Passwort soll eine Navigation durchgeführt werden:
//Testing with wrong Pasword
UITestEngine.CurrentInstance.TextBox_InputText("UserNameTextBox", "UserName");
UITestEngine.CurrentInstance.PasswordBox_InputPassword("PasswordBox", "WrongPassword");

UITestEngine.CurrentInstance.Navigation_ListenIfNavigated(5000);
UITestEngine.CurrentInstance.Button_Click("LoginButton");
UITestEngine.CurrentInstance.Navigation_HasNotNavigate(5000);

//Testing with Right Password
UITestEngine.CurrentInstance.TextBox_InputText("UserNameTextBox", "UserName");
UITestEngine.CurrentInstance.PasswordBox_InputPassword("PasswordBox", "RightPassword");

UITestEngine.CurrentInstance.Navigation_ListenIfNavigated(5000);
UITestEngine.CurrentInstance.Button_Click("LoginButton");
UITestEngine.CurrentInstance.Navigation_HasNavigate(5000);

Methoden und Propertys prüfen
object Control_RaiseMethod(String pControlName, string pMethodName, params object[] pArgs)
object Control_RaiseMethod(String pControlName, DependencyObject pParent, string pMethodName, object[] pArgs)
object Control_GetPropertyValue(String pControlName, string pPropertyName, params object[] pIndex)
object Control_GetPropertyValue(String pControlName, DependencyObject pParent, string pPropertyName, params object[] pIndex)
object Control_GetPropertyValue(String pControlName, DependencyProperty pProperty)
object Control_GetPropertyValue(String pControlName, DependencyObject pParent, DependencyProperty pProperty)
void Control_SetPropertyValue(String pControlName, string pPropertyName, object pValue, params object[] pIndex)
void Control_SetPropertyValue(String pControlName, DependencyObject pParent, string pPropertyName, object pValue, params object[] pIndex)
void Control_SetPropertyValue(String pControlName, DependencyProperty pProperty, object pValue)
void Control_SetPropertyValue(String pControlName, DependencyObject pParent, DependencyProperty pProperty, object pValue)
Mit diesen Funktionen können Sie UI-Thread-Save auf Funktionen und Propertys von Steuerelementen zugreifen.
Bei den Propertys gibt es immer 2 Versionen:
  • Eine für den Zugriff auf DependancyPropertys
  • Eine für den Zugriff auf Propertys mittels Reflections
Hiermit können Sie alles Testen und ausführen, wofür es noch keine expliziten Test-Funktionen gibt.
Beispiel
Prüfen ob eine CheckBox nach dem Togglebefehl auch wirklich Checked ist.
UITestEngine.CurrentInstance.ToggleButton_Toggle("CheckBoxName");
var State = (bool)UITestEngine.CurrentInstance.Control_GetPropertyValue("CheckBoxName", CheckBox.IsCheckedProperty);
State.Unit_IsTrue();
Auf die gleiche weiße können auch Funktionen der Controls ausgeführt werden.

UI-Thread-Save Delegates
object DoIt_UIThreadSave(Delegate pAction, object[] pArgs)
Mit dieser Funktion können Sie (anonyme) Delegates UI-Thread-Save ausführen. Dies bietet sich an wenn komplexere Aufgaben UI-Thread-SAve ausgeführt werden sollen.
Beispiel
Das Initalisieren einer ComboBox:
UITestEngine.CurrentInstance.DoIt_UIThreadSave(new Action(delegate() 
    {
        ComboBox CB = UITestEngine.FindName<ComboBox>("ComboBox", App.Current.RootVisual);
        CB.Items.Add(new object());
        CB.Items.Add(new object());
        CB.Items.Add(new object());
        CB.Items.Add(new object());
        CB.Items.Add(new object());
        CB.Items.Add(new object());

    }),null);



This WikiPage was created with Codeplex WikiEditor

Last edited Jul 16, 2010 at 1:18 PM by SoftHai, version 5

Comments

No comments yet.