WPF自定义控件 - 如何对自定义控件进行单元测试?

时间:2011-04-01 16:23:48

标签: wpf unit-testing custom-controls dependency-properties

基本上,我正在寻找有关如何对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)。


为了避免在内存中暴露明文密码的反对:我明白我在DependencyProperty中暴露明文密码时会违反Microsoft的安全推理,但考虑到我能够使用Snoop来公开来自标准PasswordBox的明文密码我再也找不到它了。

1 个答案:

答案 0 :(得分:3)

您可以使用UI自动化,有关详细信息,请参阅以下链接:

UI Automation Overview

UI Automation of a WPF Custom Control