wpf行为单元测试

时间:2011-07-05 09:12:33

标签: wpf unit-testing testing behavior

我正在使用附加的行为向我的代码添加拖放功能。 到目前为止,一切正常,但我的问题是当我想测试我的行为类时。

例如,其中一个行为类将类似于以下内容:

public class DroppableContainerBehavior: Behavior<FrameworkElement>
{

        protected override void OnAttached()
        {
            base.OnAttached();

            AssociatedObject.AllowDrop = true;
            AssociatedObject.Drop += new DragEventHandler(AssociatedObject_Drop);
            AssociatedObject.DragOver += new DragEventHandler(AssociatedObject_DragOver);
            AssociatedObject.DragLeave += new DragEventHandler(AssociatedObject_DragLeave);

        }


        private void AssociatedObject_Drop(object sender, DragEventArgs e)
        {   
    ...
    }         
}

我现在的问题是当我想为AssociatedObject_Drop方法创建一个单元测试时,我需要创建一个DragEventArgs对象,但这个类是密封的。

我的印象是我做错了什么.. 我的问题是,我应该测试我的行为类吗?行为与UI有关,通常不值得测试UI。我对吗? 也许我必须改变我的行为代码,使其更可测试?任何想法?

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

我会重构代码并将任何业务逻辑从AssociatedObject_Drop移出到它自己的函数中,然后为这些函数编写单元测试。

答案 1 :(得分:1)

  1. 即使其类被密封,您也可以创建一个对象。

  2. 您可以在单元测试中测试提升Drop()事件

  3. 您还可以通过将其代码提取到其他函数来测试AssociatedObject_Drop()方法逻辑,并为此函数编写单元测试。