让我先说一下,我是新手单元测试,这是我第一次尝试这样做。
我正在开发一个应用程序,用户可以向画布添加元素,选择它们,移动它们等等。在每个选定的元素上,我都添加了一个修饰器。当控件取消选择时,修饰器将被移除。
我有一个方法,接收一个UIElement并移除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);