Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单元测试元素_C#_Wpf_Unit Testing_Uielement - Fatal编程技术网

C# 单元测试元素

C# 单元测试元素,c#,wpf,unit-testing,uielement,C#,Wpf,Unit Testing,Uielement,让我首先说我是单元测试新手,这实际上是我第一次尝试这样做 我正在开发一个应用程序,用户可以在其中向画布添加元素,选择它们,移动它们等等。在每个选定的元素上,我添加一个装饰器。取消选择控件时,装饰器将被删除 我有一个方法,它接收ui元素,并删除装饰器,这就是我正在测试的方法 我用来移除装饰器的方法是: public static void ClearElementAdorners(UIElement element) { IEnumerable<Adorner> a = Ado

让我首先说我是单元测试新手,这实际上是我第一次尝试这样做

我正在开发一个应用程序,用户可以在其中向
画布添加元素,选择它们,移动它们等等。在每个选定的元素上,我添加一个
装饰器
。取消选择控件时,装饰器将被删除

我有一个方法,它接收
ui元素
,并删除
装饰器
,这就是我正在测试的方法

我用来移除装饰器的方法是:

public static void ClearElementAdorners(UIElement element)
{
    IEnumerable<Adorner> a = AdornerLayer.GetAdornerLayer(element).GetAdorners(element).AsEnumerable<Adorner>();
    if (a != null)
    {
        a.ToList().ForEach((p) =>
        {
            AdornerLayer.GetAdornerLayer(element).Remove(p);
        });
    }
}
我正在做的是创建两个按钮。其中一个获得装饰器,另一个保留作为测试的控件。我从元素中移除装饰器,最后检查它们是否相等。我已经调试了删除装饰器的方法,我知道它正在工作。我不知道如何测试它。Assert.AreEqual始终失败并出现此错误

{"Assert.AreEqual failed. Expected:<System.Windows.Controls.Button>. Actual:<System.Windows.Controls.Button>. "}

按钮是不同的,但在最后你测试,如果他们是。第一个按钮与此无关。移除它,然后测试装饰层是否为空。

这不是一个单元测试。这更像是一个集成测试,因为要让这些类型的测试进行下去,需要做大量的事情;IsNull(装饰器);您正在清除层,这就是您应该测试的内容。另一个按钮根本不需要。是的,这很有意义。我之前发布的代码有效,测试通过。谢谢你的帮助。
{"Assert.AreEqual failed. Expected:<System.Windows.Controls.Button>. Actual:<System.Windows.Controls.Button>. "}
Adorner[] adorner = AdornerLayer.GetAdornerLayer(el2).GetAdorners(el2); 
Assert.IsNull(adorner);