gpt4 book ai didi

c# - 单元测试 UIElements

转载 作者:行者123 更新时间:2023-11-30 17:03:16 26 4
gpt4 key购买 nike

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

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

我有一个接收 UIElement 并删除 Adorner 的方法,这就是我正在测试的方法。

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

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);
});
}
}

我测试的方法就是这个。

[TestMethod]
public void ClearElementAdornersUnitTesting()
{

Button el = new Button();
Button el2 = new Button();
TestingWindow t = new TestingWindow();
t.Show();

t.TestingCanvas.Children.Add(el);
t.TestingCanvas.Children.Add(el2);

AdornerLayer alayer = AdornerLayer.GetAdornerLayer(el2);
alayer.Add(new ClassLibrary.EditModeAdornerLayer(el2));

ClassLibrary.AdornerOperations.ClearElementAdorners(el2);
Assert.AreEqual(el, el2);
}

我正在做的是创建两个按钮。其中一个得到一个装饰物,另一个作为测试的控制。我从元素中移除装饰器,最后检查它们是否相等。我已经调试了移除装饰器的方法,并且我知道它正在运行。我不知道的是如何测试它。 Assert.AreEqual 总是失败并出现此错误。

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

同样,这可能是完全错误的,但我该如何运行这个测试呢?如果需要更多信息,我很乐意提供。

谢谢

正确的做法是:

Adorner[] adorner = AdornerLayer.GetAdornerLayer(el2).GetAdorners(el2); 
Assert.IsNull(adorner);

最佳答案

按钮不一样,但最后您测试时好像它们是一样的。第一个按钮与它没有任何关系。将其移除,然后测试装饰层是否为空。

关于c# - 单元测试 UIElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com