ユニットテストは初めてで、実際にやろうとしているのは初めてだと言って始めましょう。
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);
}
私がやっていることは、2つのボタンを作成することです。そのうちの 1 つは装飾を取得し、もう 1 つはテストのコントロールとして残ります。要素からアドナーを削除し、最後にそれらが等しいかどうかを確認します。アドナーを削除する方法をデバッグしましたが、それが機能していることはわかっています。私が知らないのは、それをテストする方法です。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);