3

ユニットテストは初めてで、実際にやろうとしているのは初めてだと言って始めましょう。

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

1 に答える 1

2

ボタンは同じではありませんが、最終的には同じであるかのようにテストしています。最初のボタンはそれとは何の関係もありません。それを削除し、後で装飾層が空であることをテストします。

于 2013-09-14T16:16:55.777 に答える