wpf行为单元测试

wpf行为单元测试,wpf,unit-testing,testing,behavior,Wpf,Unit Testing,Testing,Behavior,我正在使用附加的行为将拖放功能添加到我的代码中。 到目前为止,一切都很顺利,但我的问题是什么时候我想测试我的行为课 例如,其中一个行为类如下所示: public class DroppableContainerBehavior: Behavior<FrameworkElement> { protected override void OnAttached() { base.OnAttached();

我正在使用附加的行为将拖放功能添加到我的代码中。 到目前为止,一切都很顺利,但我的问题是什么时候我想测试我的行为课

例如,其中一个行为类如下所示:

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)
        {   
    ...
    }         
}
公共类DroppableContainerBehavior:行为
{
受保护的覆盖无效附加()
{
base.onatached();
AssociatedObject.AllowDrop=true;
AssociatedObject.Drop+=新的DragEventHandler(AssociatedObject\u Drop);
AssociatedObject.DragOver+=新的DragEventHandler(AssociatedObject\u DragOver);
AssociatedObject.DragLeave+=新的DragEventHandler(AssociatedObject\u DragLeave);
}
私有void关联对象(对象发送方,DragEventArgs e)
{   
...
}         
}
我现在的问题是,当我想为AssociatedObject\u Drop方法创建一个单元测试时,我需要创建一个DragEventArgs对象,但是这个类是密封的

我给人的印象是我做错了什么。。 我的问题是,我应该测试我的行为课吗?行为与UI相关,通常不值得测试UI。我说得对吗? 也许我必须改变我的行为准则,使其更易于测试?有什么想法吗


谢谢你的帮助

我会重构代码,将所有业务逻辑从
AssociatedObject\u Drop
移出到自己的函数中,然后为这些函数编写单元测试

  • 即使对象的类是密封的,也可以创建对象

  • 您可以在单元测试中测试raise Drop()事件

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

  • 你知道我如何创建一个对象,即使它的类是密封的吗?密封的类不能被继承,但你可以创建这个类的实例。请参阅,很抱歉,执行新DragEventArgs()时出现的问题不是密封的。我无法实例化它,因为构造函数是内部的。@实际上,我不明白为什么您需要创建此参数来签署处理程序以删除事件。如果您仍要创建此参数,可以为此类型DragEventArgs创建一个模拟。