私は現在、Textbox、Groupbox などのフォーム コントロールでいくつかの基本的な操作を行ういくつかのメソッドを作成しています。これらの操作は一般的であり、あらゆるアプリケーションで使用できます。
私はいくつかの単体テストを書き始めましたが、System.Windows.Forms にある実際のフォーム コントロールを使用するべきか、それともテストしようとしているセクションを単にモックアップするべきか疑問に思っていました。たとえば、次のようになります。
コントロールを取るこのメソッドがあり、それがテキストボックスの場合、次のようにテキストプロパティをクリアするとします:
public static void clearall(this Control control)
{
if (control.GetType() == typeof(TextBox))
{
((TextBox)control).Clear();
}
}
次に、このメソッドをテストしたいので、次のようにします。
[TestMethod]
public void TestClear()
{
List<Control> listofcontrols = new List<Control>();
TextBox textbox1 = new TextBox() {Text = "Hello World" };
TextBox textbox2 = new TextBox() { Text = "Hello World" };
TextBox textbox3 = new TextBox() { Text = "Hello World" };
TextBox textbox4 = new TextBox() { Text = "Hello World" };
listofcontrols.Add(textbox1);
listofcontrols.Add(textbox2);
listofcontrols.Add(textbox3);
listofcontrols.Add(textbox4);
foreach (Control control in listofcontrols)
{
control.clearall();
Assert.AreEqual("", control.Text);
}
}
System.Window.Forms への参照を単体テストに追加し、実際の Textbox オブジェクトを使用する必要がありますか? または私はそれを間違っていますか?
注: 上記のコードは単なる例であり、コンパイルも実行もしていません。