WPF Custom Control - Как вы тестируете пользовательский элемент управления? - PullRequest
9 голосов
/ 01 апреля 2011

По сути, я ищу ресурсы / руководства по модульному тестированию пользовательского элемента управления WPF.

В этом конкретном случае созданный мной пользовательский элемент управления расширяет класс Decorator. Он оборачивает дочерний элемент PasswordBox для предоставления свойства пароля CLR в качестве свойства DependencyProperty.

public class BindablePasswordBox : Decorator
{
    public BindablePasswordBox()
    {
        Child = new PasswordBox();
        ((PasswordBox)Child).PasswordChanged += this.PasswordChanged;
    }

    public static readonly DependencyProperty PasswordProperty =
        DependencyProperty.Register("Password", typeof(String), typeof(BindablePasswordBox),
            new FrameworkPropertyMetadata
            {
                BindsTwoWayByDefault = true,
                DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus
            });

    public String Password
    {
        get { return (String)GetValue(PasswordProperty); }
        set { SetValue(PasswordProperty, value); }
    }

    void PasswordChanged(Object sender, RoutedEventArgs e)
    {
        Password = ((PasswordBox)Child).Password;
    }
}

P.S. Я использую встроенную среду тестирования Visual Studio (Microsoft.VisualStudio.QualityTools.UnitTestFramework).


Чтобы избежать негативной реакции по поводу предоставления незашифрованных паролей в памяти: я понимаю, что я иду против соображений безопасности Microsoft, выставляя открытый пароль в DependencyProperty, но учитывая, что я смог использовать Snoop для разоблачить незашифрованный пароль из стандартного PasswordBox Я не считаю его таким уж важным.

1 Ответ

3 голосов
/ 02 апреля 2011

Вы можете использовать UI Automation, см. Следующие ссылки для получения дополнительной информации:

Обзор автоматизации пользовательского интерфейса

Автоматизация пользовательского интерфейса WPF Custom Control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...