代码之家  ›  专栏  ›  技术社区  ›  Dean Chalk

单元测试依赖项属性

  •  1
  • Dean Chalk  · 技术社区  · 14 年前

    我继承了一些开发人员正在使用的现有项目。 Dependency 属性,而不是 INotifyPropertyChanged 用于WPF更改通知。

    我正处于一个需要将单元测试重新安装到整个解决方案的位置。

    中的某些依赖项属性 ViewModel 直接从后台工作进程异步更新,所以我需要通过单元测试连接到这些更新中。(我无法更改代码和使用回调)。

    如何才能做到这一点?

    许多开发人员似乎更喜欢依赖属性而不是 更改了InotifyProperty ,但它们似乎很难(如果不是不可能)为编写单元测试。

    我遗漏了什么吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Tim Cooper    13 年前

    你可以用 DependencyPropertyDescriptor 要将更改的处理程序附加到依赖项属性,请执行以下操作:

    DependencyPropertyDescriptor.FromProperty(TextBox.TextProperty, typeof(TextBox)).AddValueChanged(textBox, OnTextChanged);
    

    但是,有一个 slew of reasons 不在视图模型中使用依赖项属性。考虑到您继承了代码,我建议编写单元测试来断言代码的行为,然后切换到使用 INotifyPropertyChanged .

        2
  •  1
  •   Sean U    14 年前

    由于依赖项属性可以在xaml中控制,因此没有启动任何正在使用它们的窗口就无法对它们进行全面的单元测试。在这一点上,你真的不再是单元测试了。

    也就是说,可以通过调用 DependencyObject 的GetValue()和SetValue()方法。